`
braverong
  • 浏览: 6155 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDBC加载Driver

    博客分类:
  • jdbc
阅读更多

转载:http://blog.csdn.net/ronux/article/details/8186488

在java中创建JDBC数据库连接,分为简单的四步:

1. 在代码中引入JDBC使用到的类,import java.sql.*;;

2. 注册JDBC驱动:由JVM加载相应的驱动类到内存中;

3. 组织URL信息;

4. DriverManger.getConnnection()创建连接。

不过在注册驱动时,有几种不同的做法:1).Class.forName("com.mysql.jdbc.Driver");2).Class.forName("com.mysql.jdbc.Driver").newInstance();3).DriverManager.registerDriver(new com.mysql.jdbc.Driver())。

在Java中,一个类只有在需要的时候才会被加载的,而JDBC的代码通常不会直接引用Driver的,所以只能在代码中通过上述三种方式主动加载。我一直很想知道前两种注册驱动的区别,其实是这样的,每一个数据库提供商实现的Driver都有一个static代码块,也就是在按照第一种方式加载某Driver时已经完成了必要的初始化操作。也就是说可以不再按第二种方式的.newInstance()也是可以的。但是现实中的程序多是用第二种方式,tutorialspoint中解释说这样做是为了让程序在一些不兼容的JVM中也能正常工作。

com.mysql.jdbc.Driver的static代码块:

static {  
    try {  
        java.sql.DriverManager.registerDriver(new Driver());  
    } catch (SQLException E) {  
        throw new RuntimeException("Can't register driver!");  
    }  
}  
 
加载和初始化Driver的工作完成了,但是在创建数据库连接时,DriverManager并不知道我们需要的是哪一个驱动,因为JVM可能加载了不止mysql的一个驱动。在实现中,DriverManager通过遍历drivers数组(在内部为Vector类型),并分别调用每一个driver(已经被加载的)的acceptsURL(url),询问他们是否能处理这样的url,以此完成选择Driver的工作。

不过JDBC4.0推出已有些年头了,根据Java SE Service Provider机制,Class.forName("com.mysql.jdbc.Driver")不再是必要的,并且对于已经这样做的旧代码,也可以不修改一行代码仍旧适用。新规范里,只要数据库提供商的JDBC
jar包添加到classpath,而开发人员根本不需要知道需要的是哪一个Driver,并且做到了程序代码和Driver的名称完全无关。不过要这样做是有前提的,数据库提供商的JDBC jar包必须支持这样的新机制。具体而言就是,JDBC4.0 Driver jar包中必须包含META-INF/services/java.sql.Driver文件,这个文件里包含了提供商实现的新Driver类的全路径。

参考资料:

http://www.tutorialspoint.com/jdbc/jdbc-db-connections.htm

http://stackoverflow.com/questions/12933113/better-understaning-class-fornamecom-mysql-jdbc-driver-newinstance?rq=1

 

分享到:
评论

相关推荐

    com.mysql.cj.jdbc.driver驱动下载

    在上述代码中,`Class.forName("com.mysql.cj.jdbc.Driver")`这行是用来加载并注册驱动。之后,`DriverManager.getConnection(url, username, password)`用于建立到MySQL服务器的连接。`url`参数应包含数据库的主机...

    DmJdbcDriver,达梦数据库maven版本,dm.jdbc.driver.DmDriver

    标题中的"DmJdbcDriver"指的是达梦数据库提供的Java JDBC驱动程序,全称为"dm.jdbc.driver.DmDriver"。JDBC(Java Database Connectivity)是Java编程语言与各种数据库进行交互的一种标准接口,而DmDriver是达梦...

    hana jdbc ngdbc.jar com.sap.db.jdbc.Driver

    2. 在代码中使用 `Class.forName()` 方法加载驱动类,例如:`Class.forName("com.sap.db.jdbc.Driver")`。 3. 使用 `DriverManager.getConnection()` 创建数据库连接,提供 HANA 数据库的 URL、用户名和密码,如:`...

    com.mysql.cj.jdbc.Driver.zip

    在本压缩包"com.mysql.cj.jdbc.Driver.zip"中,包含两个核心文件:`mysql-connector-java-8.0.27.jar`和`mysql-connector-java-8.0.27.zip`。这两个文件都是MySQL官方发布的JDBC驱动程序,版本为8.0.27,适用于与...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    在给定的压缩包文件中,包含了三个不同版本的达梦JDBC驱动,分别是Dm7JdbcDriver16.jar、Dm7JdbcDriver17.jar和Dm7JdbcDriver18.jar。 1. **JDBC驱动介绍**: JDBC是Java中用于与各种数据库进行交互的标准接口,它...

    oracle.jdbc.driver.OracleDriver

    使用"oracle.jdbc.driver.OracleDriver"时,首先需要在Java程序中加载这个驱动,通常通过Class.forName()方法完成: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 接着,通过DriverManager.get...

    JDBC Driver 驱动包

    3. 在Java代码中通过`Class.forName()`方法加载驱动,例如:`Class.forName("com.mysql.jdbc.Driver")`。 4. 使用`DriverManager.getConnection()`方法建立数据库连接,提供连接字符串、用户名和密码。 5. 创建...

    Cassandra JDBC Driver

    在使用`cassandra-jdbc-driver-0.8.2.jar`文件时,开发人员需要将其添加到项目的类路径中,以便在代码中通过`Class.forName()`加载驱动,并通过`DriverManager.getConnection()`建立到Cassandra集群的连接。...

    JDBC驱动包,Dm7JdbcDriver17.jar。

    JDBC驱动包Dm7JdbcDriver17.jar是连接Java应用程序与达梦数据库DM7的关键组件,它简化了数据库操作的过程,使得开发者能够利用Java的强大功能处理DM7中的数据。在Spring Boot项目中,只需将驱动添加至依赖,并正确...

    Oracle数据库的JDBC驱动包

    其中classes12.jar是从oracle安装目录中获取的,使用它编写java程序连接oracle时,驱动包的加载路径为"oracle.jdbc.driver.OracleDriver",即Class.forName("oracle.jdbc.driver.OracleDriver")。另一个ojdbc6.jar的...

    JDBC_Driver

    4. **SQL Server JDBC驱动**:Microsoft提供了两个版本的JDBC驱动,即SQL Server JDBC Driver和Java Database Connectivity (JDBC) Driver for SQL Server。这两个驱动都允许Java应用程序与SQL Server 2000、2008等...

    com.mysql.cj.jdbc.Driver

    "com.mysql.cj.jdbc.Driver"是这个驱动程序中的具体实现类,当你在Java代码中通过`Class.forName("com.mysql.cj.jdbc.Driver")`来加载这个类时,JDBC驱动就会被初始化,从而可以创建到MySQL服务器的连接。...

    达梦驱动包Dm7 Jdbc Driver 16.jar

    【达梦驱动包Dm7 Jdbc Driver 16.jar】是专为达梦数据库设计的一款Java数据库连接器,用于在Java应用程序中建立与达梦数据库的连接。JDBC(Java Database Connectivity)是Java编程语言中用于规范客户端程序如何访问...

    JDBC Driver

    - 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` - 创建数据库连接:`Connection conn = DriverManager.getConnection(url, username, password)` - 准备SQL语句:`Statement stmt = conn.createStatement...

    mysql jdbc driver

    1. 加载驱动:通过`Class.forName("com.mysql.jdbc.Driver")`方法加载MySQL的JDBC驱动。 2. 创建连接:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来建立与MySQL服务器的连接。例如: `...

    达梦数据库驱动Dm7JdbcDriver17

    **达梦数据库驱动Dm7JdbcDriver17详解** 达梦数据库系统是国产的一款高性能、高可用性的关系型数据库管理系统,广泛应用于政府、金融、电信等关键领域。其Dm7版本是达梦数据库的一个重要里程碑,为用户提供了一流的...

    常用数据库jdbc-driver包

    - 加载驱动:`Class.forName("com.mysql.cj.jdbc.Driver");` - 创建连接:`Connection conn = DriverManager.getConnection(url, username, password);` - 创建Statement或PreparedStatement对象以执行SQL语句。 - ...

    jdbc-driver.rar

    1. 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` 或 `Class.forName("oracle.jdbc.driver.OracleDriver")`。 2. 创建连接:`Connection conn = DriverManager.getConnection(url, username, password);` 3. ...

    JAVA WEB开发中的JDBC DRIVER

    Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myService", "username", "password"); ``` 在所有这些例子中,`Class.for...

Global site tag (gtag.js) - Google Analytics