| 類型 | 名稱 | 特徵 |
|---|---|---|
| Type 1 | JDBC-ODBC Bridge | 架設於 ODBC,非純 Java |
| Type 2 | Native API | 部分 Java + 本地程式碼 |
| Type 3 | Network Protocol | 純 Java,三層架構,中介層轉發 |
| Type 4 | Native Protocol | 純 Java,直連資料庫專有協議 |
所有驅動必須實作四大核心類:Driver、Connection、Statement、ResultSet。DriverManager 管理已載入驅動,客戶端透過 getConnection() 取得連線。
com.jw.client提供標準 JDBC 介面實作:
JWDriver:實作 java.sql.DriverJWConnection:實作 ConnectionJWStatement:實作 StatementJWResultSet:實作 ResultSet客戶端應用(含 Applet)直接使用這些類,內部透過 RMI 與中介層通訊。
com.jw.serverRMI 伺服器,透過 JDBC-ODBC Bridge 連接資料庫。包含四個遠端介面及其實作:
IRemoteDriver、IRemoteConnection、IRemoteStatement、IRemoteResultSet實作類內部持有對應的 JDBC-ODBC Bridge 物件,接收客戶層 RMI 呼叫後轉發給本地 JDBC 物件執行。
static {
JWDriver driverInst = new JWDriver();
DriverManager.registerDriver(driverInst);
System.setSecurityManager(new RMISecurityManager());
}
靜態區塊在 Class.forName("com.jw.client.JWDriver") 時執行。
DriverManager.getConnection(url)JWDriver.connect(url) 驗證 URL 格式remoteDriver = (IRemoteDriver) Naming.lookup("rmi://"+serverName+":1099/RemoteDriver")remoteDriver.getConnection() 取得遠端連線物件JWConnection 回傳應用public Statement createStatement() throws SQLException {
IRemoteStatement remStmt = (IRemoteStatement) remoteConnection.createStatement();
JWStatement localStmt = new JWStatement(remStmt);
return localStmt;
}
客戶層 JWConnection 持有 IRemoteConnection 參考,透過 RMI 呼叫中介層建立 Statement,再包裝為本地 JWStatement 回傳。
第二部分將詳細講解:完整原始碼實作、編譯部署步驟、ResultSet 遠端迭代機制。第三部分將增強進階特性:SQL 審計日誌、連線池、預處理資料集。
建議先閱讀 Nitin Nanda《JDBC Drivers in the Wild》奠定驅動架構基礎概念。