以MySQL的驅動為例,介紹注冊驅動程序的3種方式
1:Class.forName("com.mysql.cj.jdbc.Driver");// 加載數據庫驅動
1 package com.pine.interview.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class Driver1 { 8 public static void main(String[] args) throws ClassNotFoundException, SQLException { 9 Class.forName("com.mysql.cj.jdbc.Driver");// 加載數據庫驅動 10 String url = "jdbc:mysql://localhost:3306/pine?serverTimezone=UTC";// 數據庫連接子協議 11 Connection conn = DriverManager.getConnection(url, "root", "root"); 12 System.out.println(conn); 13 conn.close(); 14 } 15 }
2:System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");// 加載數據庫驅動
1 package com.pine.interview.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class Driver2 { 8 public static void main(String[] args) throws ClassNotFoundException, SQLException { 9 System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");// 加載數據庫驅動 10 String url = "jdbc:mysql://localhost:3306/pine?serverTimezone=UTC";// 數據庫連接子協議 11 Connection conn = DriverManager.getConnection(url, "root", "root"); 12 System.out.println(conn); 13 conn.close(); 14 /** 15 * 可以同時導入多個jdbc驅動,中間用冒號“:”分開 16 比如System.setProperty("jdbc.drivers","XXXDriver:XXXDriver:XXXDriver"); 17 */ 18 } 19 }
3:new com.mysql.cj.jdbc.Driver();// 加載數據庫驅動
1 package com.pine.interview.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class Driver3 { 8 public static void main(String[] args) throws SQLException { 9 new com.mysql.cj.jdbc.Driver();// 加載數據庫驅動 10 String url = "jdbc:mysql://localhost:3306/pine?serverTimezone=UTC";// 數據庫連接子協議 11 Connection conn = DriverManager.getConnection(url, "root", "root"); 12 System.out.println(conn); 13 conn.close(); 14 } 15 }
推薦使用方法1、方法2,其中方法2可以一次性注冊多個驅動
不推薦使用方法3,因為編譯時會依賴mysql的驅動包,而且靜態代碼塊中會進行驅動的注冊,new 出來的 Driver的實例是多余無用的
如下圖所示: