当前位置: 代码迷 >> J2SE >> jdbc的小问疑惑解决办法
  详细解决方案

jdbc的小问疑惑解决办法

热度:323   发布时间:2016-04-24 18:12:18.0
jdbc的小问疑惑
我今天突然发现,不进行任何驱动程序注册的时候,打印
DriverManager.getDrivers()竟然有输出。。值为
sun.jdbc.odbc.JdbcOdbcDriver@3aa450bb

这是为什么?

难道是myeclipse干得?

------解决方案--------------------
探讨
我今天突然发现,不进行任何驱动程序注册的时候,打印
DriverManager.getDrivers()竟然有输出。。值为
sun.jdbc.odbc.JdbcOdbcDriver@3aa450bb

这是为什么?

难道是myeclipse干得?

------解决方案--------------------
专门测了下 我这边显示的是java.util.Vector$1@a62fc3 
这个正好跟源码里面的java.util.Vector<Driver> result = new java.util.Vector<Driver>()吻合

------解决方案--------------------
默认的这个应该是JDBC-ODBC桥接的驱动程序,如果你配置ODBC源,使用ODBC桥接的话 可以不用显式加载sun.jdbc.odbc.JdbcOdbcDriver 这个驱动
但是如果你用纯JDBC连接其他数据库,应该还是要执行Class.forName等的一般过程
------解决方案--------------------
貌似符合逻辑,默认提供odbc的jdbc驱动
至于是不是默认就有可以看看sun.jdbc.odbc.JdbcOdbcDriver的实现是不是默认就被jvm加载了
是不是在jre就提供了
------解决方案--------------------
DriverManager.loadInitialDrivers() {}
这个方法会去加载sun.jdbc.odbc.JdbcOdbcDriver

这个方法在调用getConnection()时会仅且加载一次
  相关解决方案