DriverManager.registerDriver(new com.mysql.jdbc.Driver());
在java中用这种方式注册驱动,程序出错,有包
用Class.forName("com.mysql.jdbc.Driver")这个就没有错
在java中用这种方式注册驱动,程序出错,有包
用Class.forName("com.mysql.jdbc.Driver")这个就没有错
解决方案 »
- action中使用@Service问题
- MyEclipse6.5在本机上运行项目时,连接sql server2000,出现让人蛋疼的问题
- struts怎样拿到表单中的submit的不同键值??急!!
- 乱码问题
- 在weblogic哪里设置修改htm页面后,不用重起服务?
- 遇到一个很棘手的问题,关于hibernate的,请达人解答啊
- (Cookie)的问题
- <transaction-type>Bean</transaction-type>中间写Bean和写<transaction-type>Container</transaction-type>有什么区别啊?
- 虚拟机与主机之间能互PING但是无法互相连接
- IDEA terminal输出问题
- 求做过上传的人来啊。
- 导入数据库的时候出问题,求助!
一直用的都是String url="com.mysql.jdbc.Driver"; class.forName(url);的方式注册驱动。
原理是运动reflecting(反射)机制把引用名为com.mysql.jdbc.Driver的Driver对象的构造信息写入堆中的方法区。而且会调用Driver的无参构造方法在完成实例化。。
而new com.mysql.jdbc.Driver()通过new 一个对象的引用来当做registerDriver()方法的参数有点让人想不太通。恭请楼主按照原始的套路。
DriverManager.registerDriver(new com.mysql.jdbc.Drive()); Connection conn=DriverManager.getConnection(url,user,pwd);
楼上的你们都说错了吧! 这种方式是可以的,不信自己试试去!
我用这种方式的时候,一写完就出错,错误时找不到这个类,
用Class.forName("com.mysql.jdbc.Driver")是时候,程序都可以运行起来,证明驱动有效,
是不是可能在其它的地方存在错误
那如何才能自动注册呢,有一点需要注意的就是Class.forName就可以注册,只能将注册信息添加到静态代码中,所有Driver代码的实现类中都采用了
static {
try {
DriverManager.registerDriver(new ProxoolDriver());
} catch (SQLException e) {
System.out.println(e.toString());
}
}
这种方式进行注册,这样在Class.forName的时候就会执行上面的代码,也就想系统注册驱动程序,注册驱动程序就是他会组装DriverInfo 后缓存到DriverManager中,便于后面进行处理