從零建置 Java (Eclipse) 連線 SQL Server 2005 Express 開發環境,涵蓋驅動下載、資料庫設定、專案庫引用、連線字串差異 (2000 vs 2005) 完整實作筆記。
軟體下載清單
資料庫端設定 (必要步驟)
- 安裝 SQL Server Express,**勿使用 Windows 驗證**,選混合模式並設定
sa 密碼
- SQL Server Configuration Manager → SQLEXPRESS 協定 → TCP/IP → 啟用
- TCP/IP 屬性 → IPAll → TCP 連接埠 = 1433,清空動態連接埠
- 重啟 SQL Server (SQLEXPRESS) 服務
- SSMSEE 連入 → 新增資料庫
sample
Eclipse 專案設定
- 解壓 JDBC 驅動 → 取得
sqljdbc.jar 路徑
- 專案右鍵 → Build Path → Configure Build Path → Libraries → Add External JARs → 選
sqljdbc.jar
- (選擇性) 偏好設定 → Java → Installed JREs → Edit → 加入同一 jar,讓除錯可進原始碼
關鍵差異:SQL Server 2000 vs 2005 JDBC 連線字串
| 版本 | Driver Class | JDBC URL |
| SQL Server 2000 | com.microsoft.jdbc.sqlserver.SQLServerDriver | jdbc:microsoft:sqlserver://host:1433;DatabaseName=db |
| SQL Server 2005+ | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://host:1433;DatabaseName=db |
⚠ 寫錯 Driver Class 或 URL 會拋出 ClassNotFoundException 或 No suitable driver,請嚴格對照上表。
測試程式碼
import java.sql.*;
public class TestSQLServerConnection {
public static void main(String[] args) {
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=sample";
String user = "sa";
String pwd = "123456";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pwd);
System.out.println("✅ Connection Successful!");
// 簡單查詢驗證
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT @@VERSION");
if (rs.next()) System.out.println("Server: " + rs.getString(1));
rs.close(); stmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
常見錯誤與解決
| 錯誤 | 原因 | 解決 |
| ClassNotFoundException | jar 未加入 Build Path / 拼寫錯誤 | 確認 sqljdbc.jar 在 Libraries、Driver Class 全名正確 |
Connection refused / Network error | TCP/IP 未啟用 / 連接埠非 1433 / 防火牆阻擋 | Configuration Manager 啟用 TCP/IP、設定靜態埠、開放防火牆 |
| Login failed for user 'sa' | 密碼錯誤 / sa 帳戶停用 / 混合模式未開啟 | SSMSEE 確認 sa 啟用、重設密碼、伺服器屬性啟用混合驗證 |
| SSL 加密錯誤 (新版驅動) | JDBC 6.0+ 預設 encrypt=true | URL 加 ;encrypt=false;trustServerCertificate=true 或配置憑證 |
進階連線池建議
生產環境請使用 HikariCP / Druid / Tomcat JDBC Pool,範例:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:sqlserver://localhost:1433;DatabaseName=sample");
config.setUsername("sa"); config.setPassword("123456");
config.setMaximumPoolSize(20);
DataSource ds = new HikariDataSource(config);