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);
}
}
