JDBC注册驱动程序三种方式
来源:互联网 发布:淘宝店铺装修网站 编辑:程序博客网 时间:2024/05/20 14:28
一、DriverManager.registerDriver(new
jdbc是使用桥的模式进行连接的。DriverManager就是管理数据库驱动的一个类,java.sql.Driver就 是一个提供注册数据库驱动的接口,而com.microsoft.sqlserver.jdbc.SQLServerDriver()是 java.sql.Driver接口的一个具体实现。
二、System.setProperty("jdbc.drivers",
多个驱动使用冒号分隔开,在连接时JDBC会按顺序搜索,直到找到第一个能成功连接指定URL的驱动程序。
三、Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
第二种与第三种方法可以脱离jdbc的驱动进行编译,第一种方法不可以的,它一定要有jdbc的驱动才可以通过编译,这样对我们的程序就有很多的不好之处,为程序换数据库会带来麻烦。
我们通过Driver类的源码可以了解到,Driver类中就有一个静态的代码块,只要我们执行了Driver类中的静态代码块,并把驱动的实例放入到Drivers的一个数组列表中,我们再调用方法registerDrever就相当于又向drivers列表中放了一次driver驱动,虽然这并不影响我们程序,但是这样做实在是没有必要,还会影响程序的运行。
所以推荐使用第三种方法来注册驱动。
第三中的好处在于能够在编译时不依赖于特定的JDBC Driver库,也就是减少了项目代码的依赖性,而且也很容易改造成从配置文件读取JDBC配置,从而可以在运行时动态更换数据库连接驱动。
///////////////////////////////////////////////////////////////////////////////////////////////////
1.DriverManager.registerDriver(new com.mysql.jdbc.Driver());缺点:由new com.mysql.jdbc.Driver()可以知道,这里需要创建一个类的实例。创建类的实例就需要在java文件中将该类通过import导入,否则就会报错,即采用这种方式,程序在编译的时候不能脱离驱动类包,为程序切换到其他数据库带来麻烦。实际上这个地方还做了一次无用功,Driver类中本身已经含有静态块将instance放入驱动列表中。(详细说明可以参照mysql的Driver类)public class Driver extends NonRegisteringDriver implements java.sql.Driver { // ~ Static fields/initializers // --------------------------------------------- // // Register ourselves with the DriverManager // static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } // ~ Constructors // ----------------------------------------------------------- /** * Construct a new driver and register it with DriverManager * * @throws SQLException * if a database error occurs. */ public Driver() throws SQLException { // Required for Class.forName().newInstance() } }由上可见,在创建Driver类的时候,其实已经调用一次registerDriver方法了、2,System.setProperty(”jdbc.drivers“,”com.mysql.jdbc.Driver“);
可以脱离驱动包编译,可以同时设置多个驱动,多个驱动之间使用冒号分隔。
3,Class.forName(“com.mysql.jdbc.Driver”);此方式由于参数为字符串,因此很容易修改,移植性强。
最常见的注册方式,也是推荐的方式。
0 0
- 注册Jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- 注册Jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- JDBC注册驱动程序三种方式
- JDBC注册驱动程序三种方式
- 注册jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- JDBC注册驱动程序三种方式
- 注册jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- JDBC注册驱动程序三种方式
- 注册jdbc驱动程序的三种方式
- 注册jdbc驱动程序的三种方式
- JDBC注册驱动程序的三种方式
- JDBC注册驱动程序三种方式
- 北京站停售站台票引接站者不满 多人强行闯入
- SpringMvc多视图整合配置教程(jsp、velocity、freemarker)
- 黑马程序员_java_基础加强_静态导入_反射_枚举_注解_内省_泛型
- 现在还无法确定这个方法是否正确
- Do what you love: Why you are not your job
- JDBC注册驱动程序三种方式
- 谁会这般去爱你
- 第十三题 从上往下遍历二叉树
- Win32 框架文档视图(2)
- 如何修改和查看tomcat内存大小
- ghost 小记
- Win32 框架文档视图(3)
- ACM Sdut 2158 Hello World!(数学题,排序) (山东省ACM第一届省赛C题)
- VS2010 CString 转 const char *