JDBC接口(API)
- 提供了一套純粹的JAVA API給應用程式開發者
- 提供了一套低級别的JDBC driver API給資料庫驅動開發者
應用程式開發者借助于API用于開發可以通路資料庫的程式;
驅動開發者借助于API提供服務到JDBC

而提供給資料庫驅動開發者的API則正好是為了實作提供給應用程式開發者的這套API,這句話有些令人迷惑
JDBC是對資料庫操作通路的薄層封裝,應用程式開發者借助于JDBC可以實作對資料庫的操作通路,但是,最終提供的服務仍舊是具體的資料庫實作了具體SQL的執行
是以JDBC提供給應用程式開發者的API就是開發者使用JDBC資料庫的接口而提供給資料庫驅動開發者的API則恰恰是為了讓資料庫驅動開發者來提供服務
通過DriverManager類的getConnection()方法建立資料庫連接配接
public Connection myTest01() throws Exception{
// 1.準備連接配接資料庫的4個字元串
// 驅動的全類名
String driverClass = null;
// JDBC URL
String jdbcUrl = null;
// user
String user = null;
// password
String password = null;
// 讀取類路徑下的jdbc.properties 檔案
InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(in);
driverClass = properties.getProperty("driver");
jdbcUrl = properties.getProperty("jdbcUrl");
user = properties.getProperty("user");
password = properties.getProperty("password");
// 2. 加載資料庫驅動程式
Class.forName(driverClass);
// 3. 通過DriverManager 的getConnection()方法擷取資料庫連接配接
Connection connection = DriverManager.getConnection(jdbcUrl,user,password);
return connection;
}
複制
// 注冊驅動的兩種寫法
DriverManager.registerDriver(Class.forName(driverClass).newInstance) // 第一種寫法
Class.forName(driverClass); // 第二種寫法
// 支援第二種寫法的原因是 在加載驅動的時,com.mysql.cj.jdbc.Driver中有靜态代碼塊會被執行,靜态代碼塊建立了目前類的執行個體,注冊到了DriverManager,是以可以直接用第二種寫法
// 以下源碼
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
複制