JavaEE JDBC 怎么加載驅動


JDBC怎么加載驅動

@author ixenos

 

 

分析


 

1.JDBC是一套連接數據庫的接口(放在java.util.sql.Driver類中),不同的數據庫依此接口各自實現Java連接到數據庫的操作,這些具體的實現就叫做驅動

 

2.當只連接一個數據庫時,我們可以new 驅動對象來使用,但是當多數據庫連接時,要多次創建Driver示例,多次創連接Connection,有些繁瑣,這時,sun提供了一個驅動的管理器DriverManager,注冊驅動就可以調用;

3.但是每次還是要創Driver實例,然后都進行注冊,而且可能重復注冊,怎么辦?jdbc驅動的實現者就把新建實例驅動注冊的操作包裹為一個static塊(在類加載連接初始化時運行,且只運行一次),這樣加載驅動時就執行這些操作了,這也就是為什么只用Class.forName的由來。

 

 

com.mysql.jdbc.Driver對加載驅動的實現


   com.mysql.jdbc.Driver把DriverManager的注冊放在了靜態塊中

 

 

 

代碼


 

import java.sql.Connection;

import java.sql.Driver;

import java.sql.DriverManager;

import java.util.Properties;

 

import org.junit.Test;

/**

 * jdbc連接數據庫

 * @author ixenos

 *

 */

public class Demo1 {

      //連接數據庫的URL

      private String url = "jdbc:mysql://localhost:3306/day17";

                          // jdbc協議:數據庫子協議:主機:端口/連接的數據庫   //

 

      private String user = "root";//用戶名

      private String password = "root";//密碼

     

      /**

       * 第一種方法

       * @throws Exception

       */

      @Test

      public void test1() throws Exception{

           //1.創建驅動程序類對象

           Driver driver = new com.mysql.jdbc.Driver(); //新版本

           //Driver driver = new org.gjt.mm.mysql.Driver(); //舊版本

          

           //設置用戶名和密碼

           Properties props = new Properties();

           props.setProperty("user", user);

           props.setProperty("password", password);

          

           //2.連接數據庫,返回連接對象

           Connection conn = driver.connect(url, props);

          

           System.out.println(conn);

      }

     

      /**

       * 使用驅動管理器類連接數據庫(注冊了兩次,沒必要)

       * @throws Exception

       */

      @Test

      public void test2() throws Exception{

           Driver driver = new com.mysql.jdbc.Driver();

           //Driver driver2 = new com.oracle.jdbc.Driver();

           //1.注冊驅動程序(可以注冊多個驅動程序)

           DriverManager.registerDriver(driver);

           //DriverManager.registerDriver(driver2);

          

           //2.連接到具體的數據庫

           Connection conn = DriverManager.getConnection(url, user, password);

           System.out.println(conn);

          

      }

     

      /**

       * (推薦使用這種方式連接數據庫)

       * 推薦使用加載驅動程序類  來 注冊驅動程序

       * @throws Exception

       */

      @Test

      public void test3() throws Exception{

           //Driver driver = new com.mysql.jdbc.Driver();

          

           //通過得到字節碼對象的方式加載靜態代碼塊,從而注冊驅動程序

           Class.forName("com.mysql.jdbc.Driver");

          

           //Driver driver2 = new com.oracle.jdbc.Driver();

           //1.注冊驅動程序(可以注冊多個驅動程序)

           //DriverManager.registerDriver(driver);

           //DriverManager.registerDriver(driver2);

          

           //2.連接到具體的數據庫

           Connection conn = DriverManager.getConnection(url, user, password);

           System.out.println(conn);

          

      }

 

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM