首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 連線 SQL Server 驅動包演進與選型指南:從 jTDS 到 Microsoft 官方 JDBC 4.0

     編輯:Java 相關知識

驅動包演進時間軸

時代驅動包Maven 坐標支援版本狀態
早期 (2000s)jTDSnet.sourceforge.jtds:jtdsSQL Server 6.5 - 2008停止維護 (2013 年最後更新)
Microsoft 早期msbase.jar, mssqlserver.jar, msutil.jar無 (手動安裝)SQL Server 2000已淘汰
JDBC 2.0 階段sqljdbc.jarcom.microsoft.sqlserver:sqljdbc2005, 2008, 2012需手動 Class.forName
JDBC 4.0+ 階段sqljdbc4.jar / mssql-jdbc.jarcom.microsoft.sqlserver:mssql-jdbc2008 - 2022, Azure SQL**現行推薦**,支援 SPI 自動載入

核心差異:sqljdbc.jar vs sqljdbc4.jar (mssql-jdbc.jar)

sqljdbc.jar (JDBC 3.0 相容)

  • 需手動註冊驅動:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
  • 適用 JDK 1.5/1.6 環境
  • 不支援 java.sql.Driver SPI 機制

sqljdbc4.jar / mssql-jdbc.jar (JDBC 4.0+ 相容)

  • 零配置自動載入:JAR 內含 META-INF/services/java.sql.Driver,列出 com.microsoft.sqlserver.jdbc.SQLServerDriver
  • DriverManager.getConnection(url) 直接可用,無需 Class.forName
  • 需 JDK 6.0+ (JRE 6+)
  • 向下相容:舊代碼的 Class.forName 仍可工作

Maven 依賴配置 (現行最新版本)

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.4.2.jre11</version> <!-- 依 JDK 版本選擇 jre8/jre11/jre17 -->
</dependency>

版本選擇對照

JDK 版本建議驅動版本後綴範例
JDK 8.jre812.4.2.jre8
JDK 11.jre1112.4.2.jre11
JDK 17/21.jre1712.4.2.jre17

連線字串最佳實踐

// 基本連線 (信任憑證需額外配置)
String url = "jdbc:sqlserver://localhost:1433;databaseName=MyDB;encrypt=true;trustServerCertificate=true;";

// 生產環境建議:連線池 + 完整參數
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:sqlserver://prod-db:1433;databaseName=AppDB;" +
    "encrypt=true;trustServerCertificate=false;" +
    "loginTimeout=10;socketTimeout=30;" +
    "applicationName=MyApp;"); // 便於 DBA 追蹤
config.setUsername("app_user");
config.setPassword("secure_pwd");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
DataSource ds = new HikariDataSource(config);

常見問題排查

遷移清單:從 jTDS 升級

  1. 移除 jtds 依賴
  2. 新增 mssql-jdbc 依賴 (對應 JDK 版本)
  3. 更新驅動類名:net.sourceforge.jtds.jdbc.Driver → com.microsoft.sqlserver.jdbc.SQLServerDriver (或移除手動載入)
  4. 調整連線 URL 格式:jdbc:jtds:sqlserver:// → jdbc:sqlserver://
  5. 測試資料型別對應:datetime → datetime2、text → nvarchar(max)
  6. 驗證預存程序呼叫語法:{call proc(?,?)} 相容

總結

**2024 年唯一推薦**:com.microsoft.sqlserver:mssql-jdbc (JDBC 4.2+ 相容)。零配置、官方維護、支援最新 SQL Server/Azure 功能、定期安全更新。舊專案務必規劃遷移,避免使用已停止維護 10 年的 jTDS。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤現象原因解決方案
No suitable driver found驅動未載入、Maven 依賴缺失、JAR 衝突檢查 mvn dependency:tree、確認 mssql-jdbc 存在、排除舊 sqljdbc
The driver could not establish a secure connectionSQL Server 強制加密、憑證不受信加 encrypt=true;trustServerCertificate=true (測試) 或配置正規憑證 (生產)
Login failed for user認證模式錯誤 (SQL vs Windows)、密碼錯誤確認 SQL Server 混合模式啟用、檢查用戶映射、嘗試 integratedSecurity=true (Windows 域)
類別衝突 java.lang.LinkageError同時存在 jTDS 與 Microsoft 驅動排除 jTDS,統一用 Microsoft 官方驅動