关于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。
关于这个问题呢,网上没什么资料说明,我之前也存在困惑,感觉这个问题估计很多初学者都会在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。
相关文章推荐
- 多次编辑xml文件后,eclipse内存溢出异常崩溃
- myeclipse自定义注释快捷键
- Java实现数据库连接池的方法
- Java图形界面事件监听处理之四种方法
- Myeclipse的Launching JMSSink(Time of error:October 17,2009 7:22:05 PM GMT+08:00) Reason:Check the det
- java.security.NoSuchProviderException: no such provider: BC 的问题解决
- Java web开发编码设置
- maven报错 错误: 程序包javax.servlet不存在
- Java并发编程:volatile关键字解析
- Java多线程--售票代码
- spring下载地址
- springmvc 表单提交时间字段_springMVC form提交404
- Android开发工具Eclipse自己常用的几个快捷键
- springmvc 返回json数据日期格式化方法
- JAVA中Double与double(Integer&int)之间的区别
- java StringUtils
- java代码的编译和执行过程
- LeetCode java实现ZigZagConversion
- java.lang.IllegalArgumentException:Document base ……does not exist or is not a readable directory错误的解决方案
- Spring MVC 4.1.4 RESTFUL风格返回JSON数据406错误处理 .