天天看點

jdbc:擷取資料庫連接配接

一、Driver接口介紹

java.sql.Driver接口是所有jdbc驅動程式實作的接口,這個接口是供給資料廠商使用的,不同的資料庫廠商提供不同的實作。

在程式當中不需要直接去通路實作了 Driver 接口的類,而是由驅動程式管理器類(java.sql.DriverManager)去掉這些Driver實作。

mySql的驅動: com.mysql.jdbc.Driver

jdbc:擷取資料庫連接配接

2.加載與注冊JDBC驅動

  • 加載驅動:加載JDBC的的驅動需要調用 Class類的靜态方式 forName(),向其傳遞JDBC的驅動類名
Class.forName("com.mysql.jdbc.Driver");
           
  • 注冊驅動: DriverManager類是驅動程管理類,負責管理驅動程式
DriverManager.registerDriver("com.mysql.jdbc.Driver");
           

通常不用顯式調用 DriverManager 類的 registerDriver() 方法來注冊驅動程式類的執行個體,因為 Driver

接口的驅動程式類都包含了靜态代碼塊,在這個靜态代碼塊中,會調DriverManager.registerDriver()

方法來注冊自身的一個執行個體。下圖是MySQL的Driver實作類的源碼:

jdbc:擷取資料庫連接配接

二、url

jdbc url用于辨別一個被注冊的驅動程式,驅動程式管理器通過這個url選擇正确的驅動程式進而建立到資料庫的連接配接。

JDBC URL的标準由三部分組成,各部分間用冒号分隔。

jdbc: 子協定:子名稱

協定: JDBC URL中的協定總是jdbc

子協定: 子協定用于辨別一個數

子名稱: 一種辨別資料庫的方法。子名稱可以依不同的子協定而變化,用子名稱的目的是為了定位資料庫提供足夠的 資訊。包含主機名(對應服務端的ip位址),端口号,資料庫名

jdbc:擷取資料庫連接配接
jdbc:擷取資料庫連接配接

三、使用者名和密碼

user,password可以用“屬性名=屬性值”方式告訴資料庫

可以調用 DriverManager 類的 getConnection() 方法建立到資料庫的連接配接

四、資料庫連接配接方式

連接配接方式一: 使用DriverManager實作資料庫的連接配接。體會擷取連接配接必要的4個基本要素(主講)

//第一種方式
	public static void DBConnection1(){
		//1.資料庫連接配接的4個基本要素:
		String url = "jdbc:mysql://localhost:3306/test"; 
		String user = "root"; 
		String password = "abc123"; 
		String driverName = "com.mysql.jdbc.Driver";
	
		try {
			//2.執行個體化Driver
			Class clazz = Class.forName(driverName);
			Driver driver = (Driver) clazz.newInstance();
			//3.注冊驅動
			Connection conn = DriverManager.getConnection(url, user, password);
			System.out.println(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

           

連接配接方式二: 下面代碼中顯式出現了第三方資料庫的API

//第一種方式
	public static void DBConnection1(){
		try {
			//1.提供java.sql.Driver接口實作類的對象 
			Driver driver = null; 
			driver = new com.mysql.jdbc.Driver();
			//2.提供url,指明具體操作的資料
			String url = "jdbc:mysql://localhost:3306/test";
			//3.提供Properties的對象,指明使用者名和密碼
			Properties info = new Properties(); 
			info.setProperty("user", "root"); 
			info.setProperty("password", "abc123");
			//4.調用driver的connect(),擷取連接配接 
			Connection conn = driver.connect(url, info);
			System.out.println(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
           

連接配接方式三: 相較于方式二,這裡使用反射執行個體化Driver,不在代碼中展現第三方資料庫的API。展現了面向接口程式設計思想。

//第一種方式
	public static void DBConnection1(){
		try {
			//1.執行個體化Driver
			String className = "com.mysql.jdbc.Driver"; 
			Class clazz = Class.forName(className); 
			Driver driver = (Driver) clazz.newInstance();
			//2.提供url,指明具體操作的資料 
			String url = "jdbc:mysql://localhost:3306/test";
			//3.提供Properties的對象,指明使用者名和密碼
			Properties info = new Properties();
			info.setProperty("user", "root"); 
			info.setProperty("password", "abc123");
			//4.調用driver的connect(),擷取連接配接
			Connection conn = driver.connect(url, info);
			System.out.println(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
           

連接配接方式四: 說明:不必顯式的注冊驅動了。因為在DriverManager的源碼中已經存在靜态代碼塊,實作了驅動的注冊。

public static void DBConnection1(){
		try {
			//1.資料庫連接配接的4個基本要素: 
			String url = "jdbc:mysql://localhost:3306/test"; 
			String user = "root"; 
			String password = "abc123"; 
			String driverName = "com.mysql.jdbc.Driver";
			//2.加載驅動 (①執行個體化Driver ②注冊驅動)
			Class.forName(driverName);
			//3.擷取連接配接 
			Connection conn = DriverManager.getConnection(url, user, password);
			System.out.println(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
           

連接配接方式五:

public static void DBConnection1(){
         //1.加載配置檔案
        InputStream is =ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);
        //2.讀取配置資訊
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url"); 
	    String driverClass = pros.getProperty("driverClass"); 
	    //3.加載驅動
        Class.forName(driverClass); 
        //4.擷取連接配接 
        Connection conn = DriverManager.getConnection(url,user,password); 
	}
           

其中,配置檔案聲明在工程的src目錄下:【jdbc.properties】

user=root
password=abc123
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
           

說明:使用配置檔案的方式儲存配置資訊,在代碼中加載配置檔案 使用配置檔案的好處:

①實作了代碼和資料的分離,如果需要修改配置資訊,直接在配置檔案中修改,不需要深入代碼

②如果修改了 配置資訊,省去重新編譯的過程。

上一篇: Shell——4
下一篇: Shell——3

繼續閱讀