環境
- 資料庫:SQL Server 2000 SP3+(XP/2003 必裝 SP3)
- 驅動:Microsoft SQL Server 2000 Driver for JDBC
- JDK:1.2+
方案一:JDBC-ODBC Bridge(簡單但棄用)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:DSN名", "user", "pwd");
- 優點:設定快,Windows 內建 ODBC。
- 缺點:JDK 8 移除、效能差、雙重轉換、平台鎖定、記憶體洩漏風險。
方案二:官方 SQL Server JDBC 驅動(生產首選)
連線字串關鍵參數
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=StoreManager";
1433 預設埠,防火牆需開放。
DatabaseName 指定目標資料庫。
常見錯誤與解決
| 錯誤現象 | 原因 | 解決 |
Error establishing socket | 1433 埠未開、SP3 未裝、TCP/IP 協定未啟用 | 裝 SP3、SQL Server 網路工具啟用 TCP/IP、防火牆放行 |
Invalid object name 'room' | 登入用戶 (sa) 無該資料庫權限 | 在目標資料庫建立專用用戶 (如 share),授予 db_datareader/db_datawriter |
| 中文亂碼 | 字元集不匹配 | 連線字串加 ;SelectMethod=cursor 或設定資料庫排序規則 |
最佳實踐檢查清單
- 確認 SQL Server 2000 SP3+ 已安裝。
- SQL Server 組態管理器啟用 TCP/IP,埠 1433。
- 建立專用資料庫用戶,最小權限原則。
- 驅動 jar (
msbase.jar, mssqlserver.jar, msutil.jar) 放入 classpath。
- 使用連線池 (DBCP/HikariCP) 管理連線生命週期。
- 預編譯
PreparedStatement 防注入、提升效能。
現代化建議
SQL Server 2000 早已終止支援。新專案請升級至 SQL Server 2019+,並使用 Microsoft JDBC Driver for SQL Server (v12+),支援 JDBC 4.3、Always Encrypted、Azure AD 整合等現代特性。
舊系統維護時,搞定驅動版本、SP 等級、網路協定、資料庫用戶權限這四大塊,90% 的連線問題都能解決。
- 上一篇文章: WSAD、Rose、WebSphere 入門實戰:以 jPetStore 為例的建模與遷移全紀錄
- 下一篇文章: 自製 Type 3 JDBC 驅動架構設計與實作指南(一):三層網路協議模型
Copyright ©
程式碼之家 All Rights Reserved