JDBC 驅動類型回顧
| 類型 | 名稱 | 原理 | 優點 | 缺點 |
| Type 1 | JDBC-ODBC Bridge | JDBC → ODBC → DB | Windows 通用 | 需客戶端配置 ODBC、Applet 不支援、效能差 |
| Type 2 | Native-API | JDBC → Client Lib (DLL) → DB | 效能較好 | 需安裝客戶端、跨平台難 |
| Type 3 | Net-Protocol | JDBC → Middleware Server → DB | 純 Java 客戶端 | 需中間層、架構複雜 |
| Type 4 | Native-Protocol Pure Java | JDBC → TCP/IP 直連 DB | 無中間層、跨平台、部署簡單 | 需 DB 廠商提供驅動 |
結論:生產環境首選 Type 4。SQL Server 2000 使用 Microsoft JDBC Driver (Type 4)。
JBuilder 9 專案配置步驟
- 安裝 SQL Server 2000 JDBC Driver (微軟官方
sqljdbc.jar / msbase.jar / mssqlserver.jar)
- JBuilder:
Tools → Configure Libraries → New
- 名稱:
SQLServerJDBC
- 加入上述三個 JAR
- 專案屬性:
Project → Project Properties → Path → Required Libraries 加入 SQLServerJDBC
連接代碼範例
import java.sql.*;
public class SqlServerDemo {
// Type 4 驅動類
private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
// URL 格式: jdbc:microsoft:sqlserver://host:port;DatabaseName=xxx
private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo";
private static final String USER = "sa";
private static final String PASS = "123";
public static Connection getConnection() throws Exception {
Class.forName(DRIVER);
return DriverManager.getConnection(URL, USER, PASS);
}
public static void main(String[] args) {
try (Connection conn = getConnection()) {
System.out.println("DB Connection Success: " + conn);
// 執行查詢示範
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT @@VERSION")) {
if (rs.next()) System.out.println("SQL Server Version: " + rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
關鍵 URL 參數
| 參數 | 說明 | 範例 |
DatabaseName | 資料庫名稱 | ;DatabaseName=demo |
SelectMethod | 游標類型: direct (預設, 僅前向) / cursor (可捲動) | ;SelectMethod=cursor |
SendStringParametersAsUnicode | 字串參數送 Unicode (true/false) | ;SendStringParametersAsUnicode=true |
PacketSize | TDS 封包大小 | ;PacketSize=8192 |
通用 JavaBean 封裝思路
public class DbConnectionBean {
private String driver, url, user, pass;
// getter/setter...
public Connection getConnection() throws Exception {
Class.forName(driver);
return DriverManager.getConnection(url, user, pass);
}
}
// 使用: 修改屬性即可切換資料庫,適合多環境部署
版本遷移提醒
- SQL Server 2000 已結束支援 (2013)
- 現代驅動:
com.microsoft.sqlserver.jdbc.SQLServerDriver (JDBC 4.0+),Maven 坐標 com.microsoft.sqlserver:mssql-jdbc
- URL 格式變更:
jdbc:sqlserver://host:port;databaseName=xxx (小寫 databaseName)
- 支援 Always Encrypted、Azure AD 驗證、Kerberos、可靠連線
常見問題
| 錯誤 | 原因 | 解決 |
ClassNotFoundException | 驅動 JAR 未加入 Classpath | JBuilder Libraries 配置、或 WEB-INF/lib、Maven 依賴 |
Connection refused | SQL Server 未啟用 TCP/IP、防火牆阻擋、Port 錯誤 | SQL Server Configuration Manager 啟用 TCP/IP 1433、開放防火牆 |
Login failed | 帳號/密碼錯、認證模式 (Windows/SQL) | 確認 sa 啟用、混合模式、密碼正確 |
| 中文亂碼 | 字元集不匹配 | URL 加 SendStringParametersAsUnicode=true、資料庫/表/欄位 Collation 一致 |
總結
JBuilder 9 時代配合 Microsoft Type 4 JDBC Driver 連接 SQL Server 2000,核心在於 正確加入三個 JAR 到 Library、使用 jdbc:microsoft:sqlserver:// URL 格式。封裝為 JavaBean 可提升複用性。現代專案請遷移至 mssql-jdbc 新驅動與新 URL 格式。