| 維度 | 配置 |
| 作業系統 | Windows XP SP2 / Solaris 8 (SPARC) |
| JDK | JDK 1.6.0 Update 3 (含 Java DB) |
| 數據庫 | Access 2000, SQL Server 2000, MySQL, Oracle, Java DB (Derby) |
| 驅動 | JDBC-ODBC Bridge, MySQL Connector/J 5.1, Oracle Thin, Derby Embedded |
簡化 JDBC 工具類
public class FoolDB {
public static Connection openDB(String url, String user, String pwd) { ... }
public static Statement getQueryStat(Connection conn) { ... } // 只讀游標
public static Statement getExecStat(Connection conn) { ... } // 可更新
public static ResultSet openQuery(Statement stat, String sql) { ... }
public static boolean moveNext(ResultSet rs) { return rs.next(); }
public static Object getFieldByName(ResultSet rs, String name) { return rs.getObject(name); }
public static void closeDB(Connection conn) { ... }
// 批處理、事務、預編譯等輔助方法...
}
五大數據庫連接實戰
1. Access(無 DSN 直連)
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=./TestDB.mdb";
Connection conn = FoolDB.openDB(url, null, null);
借鑒 ADO 連接字符串繞過手工建立 DSN。
2. SQL Server(JDBC-ODBC Bridge)
String url = "jdbc:odbc:Driver={SQL Server};Server=.;Database=master;UID=sa;PWD=121fs";
註:微軟官方驅動 com.microsoft.jdbc.sqlserver.SQLServerDriver 效能更優,生產環境建議切換。
3. MySQL(原生驅動)
String url = "jdbc:mysql://localhost/dbname";
Connection conn = FoolDB.openDB(url, "root", "");
跨平台表現優異,Windows/Solaris 代碼零修改。
4. Oracle(Thin 驅動)
String url = "jdbc:oracle:thin:@host:1521/sid";
Connection conn = FoolDB.openDB(url, "user", "pwd");
純 Java 實現,無需客戶端庫,部署簡單。
5. Java DB / Derby(嵌入式模式)
// 首次創建
String createUrl = "jdbc:derby:FoolDB;create=true";
FoolDB.openDB(createUrl, null, null);
// 後續連接
String url = "jdbc:derby:FoolDB";
Connection conn = FoolDB.openDB(url, null, null);
// 正確關閉
FoolDB.closeDB(conn);
FoolDB.openDB("jdbc:derby:;shutdown=true", null, null); // 觸發關閉異常即表示成功
嵌入式模式無獨立進程,適合桌面應用、嵌入式設備、單元測試。
性能優化關鍵實踐
- 關閉自動提交:
conn.setAutoCommit(false),大幅減少磁盤 I/O。
- 批處理插入:
stmt.addBatch(sql); stmt.executeBatch();,合併網絡往返。
- 預編譯語句:
PreparedStatement 重用執行計劃,防 SQL 注入。
測試結果分析(插入/查詢 10000 條)
| 數據庫 | 平台 | 插入耗時 | 查詢耗時 | 評價 |
| MySQL | Win/Solaris | 優 | 優 | 跨平台首選,性價比高 |
| Oracle | Win/Solaris | 良 | 良 | 企業級功能完備,支援高級事務/集群 |
| Java DB | Win/Solaris | 良 | 良 | 純 Java、嵌入式、零部署,適合輕量級場景 |
| Access | Win | 一般 | 一般 | 單機小應用,無併發支援 |
| SQL Server | Win | 一般 | 一般 | Windows 生態深度整合,需官方驅動優化 |
選型建議
- 中小型跨平台 Web:MySQL 首選,成熟穩定、社區活躍。
- 高可用、分布式事務、複雜報表:Oracle + EJB/Spring 事務管理。
- 嵌入式設備、桌面應用、測試環境:Java DB (Derby) 零配置、純 Java。
- 純 Windows 內部小系統:Access/SQL Server 快速開發可接受。
結語
JDBC 屏蔽了底層差異,但驅動質量、數據庫特性、跨平台能力仍是選型核心。掌握連接池、批處理、事務控制等通用優化手段,比單純追求驅動速度更具實戰價值。
- 上一篇文章: JPetStore 基於 Struts+Spring+iBATIS 用戶模塊深度分析
- 下一篇文章: SWT與JFace系列第4部分:進階控件詳解
Copyright ©
程式碼之家 All Rights Reserved