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

好久没写博客了,今天看到群里一朋友问了一个问题,就是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。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值