日期:2014-05-16  浏览次数:20458 次

【JDBC】java中常见三种注册驱动方式比较

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”);
此方式由于参数为字符串,因此很容易修改,移植性强。
最常见的注册方式,也是推荐的方式。