驅動版本對應關係
| SQL Server 版本 | 驅動類名 | JDBC URL 格式 | 驅動包 |
| 2000 | com.microsoft.jdbc.sqlserver.SQLServerDriver | jdbc:microsoft:sqlserver://host:1433;DatabaseName=db | sqljdbc.jar (舊版) |
| 2005/2008/2012+ | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://host:1433;DatabaseName=db | sqljdbc4.jar / mssql-jdbc.jar |
完整連接代碼示例
import java.sql.*;
public class SqlServerConn {
public static void main(String[] args) {
// SQL Server 2005/2008/2012+
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=sample;encrypt=true;trustServerCertificate=true";
String user = "sa";
String password = "your_password";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("連接成功:" + conn.getMetaData().getDatabaseProductVersion());
// 測試查詢
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT @@VERSION");
if (rs.next()) System.out.println(rs.getString(1));
rs.close(); stmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
關鍵連接參數詳解
| 參數 | 說明 | 推薦值 |
| encrypt | 啟用 SSL 加密 | true |
| trustServerCertificate | 信任自簽證書(開發環境) | true |
| integratedSecurity | Windows 認證 | false (通常用SQL認證) |
| applicationName | 應用名稱(便於監控) | YourAppName |
| loginTimeout | 登錄超時(秒) | 30 |
| socketTimeout | 網絡讀寫超時(秒) | 60 |
常見問題排查
- ClassNotFoundException:未引入驅動包,Maven 坐標
com.microsoft.sqlserver:mssql-jdbc:12.4.1.jre11
- SSL 加密錯誤:添加
trustServerCertificate=true 或導入 CA 證書
- 端口不通:檢查 1433 端口、SQL Server 配置管理器啟用 TCP/IP、防火牆
- 實例名連接:URL 使用
jdbc:sqlserver://host;instanceName=INST;DatabaseName=db
連接池配置建議
# HikariCP 示例
jdbcUrl=jdbc:sqlserver://localhost:1433;DatabaseName=sample;encrypt=true;trustServerCertificate=true
username=sa
password=***
maximumPoolSize=20
minimumIdle=5
connectionTimeout=30000
idleTimeout=600000
maxLifetime=1800000
- 上一篇文章: SQL Server 實現 MySQL LIMIT m,n 分頁查詢的三種方案對比
- 下一篇文章: SQL Server datetime 空值插入陷阱:默認 1900-01-01 解決方案
Copyright ©
程式碼之家 All Rights Reserved