您的位置:首页 > 编程语言 > Java开发

关于java.sql.PreparedStatement和com.mysql.jdbc.PreparedStatement的区别

2015-07-21 14:48 155 查看
好久没写博客了,今天看到群里一朋友问了一个问题,就是java.sql.PreparedStatement和com.mysql.jdbc.PreparedStatement这俩货到底有什么区别。

关于这个问题呢,网上没什么资料说明,我之前也存在困惑,感觉这个问题估计很多初学者都会在jdbc这里产生疑惑的吧,所以今天我打算自己研究一遍这个问题,顺带写博客将我的想法和理解记录下来,如果哪里说错了,望路过的朋友进行指正。



首先我们来看看这张图,相信细心的朋友就会看出来了,java.sql.PreparedStatement是一个接口,而com.mysql.jdbc.PreparedStatement是作为一个类而存在的。

这会估计又有人问了一个是类,一个是接口,那他们有啥关系呀?

还记得,这个com.mysql.jdbc.PreparedStatement是哪来的么?对啦,他是在驱动包里的!我们要使用JDBC的话,那么我们是不是都要先在最前面写上一句Class.forName(XXX),XXX里是对应的驱动类,我这里用了mysql驱动,所以我这里的驱动类就是com.mysql.jdbc.Driver。

再来解释一下,所谓驱动就是实现了java.sql.Driver接口的类。Class.forName(XXX)会执行XXX类里的静态代码段。我们都知道,单纯的接口是没有任何功能的,也不能使用里面的方法,只能在类中实现相应接口中的方法。

那么这里执行驱动之后会自动创建一个Driver类的实例。从而实现里面的具体功能。

所以说,其实我们用到的是第一个,实现了之后的接口。而实现该接口的正是我们所加载的类。

那么,现在明白了,所以我们在使用的时候,用到的都是java.sql.PreparedStatement(驱动加载后已实现了具体功能),而不能用到com.mysql.jdbc.PreparedStatement。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: