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

JDBC 連線 SQL Server 2005 完整避坑指南:驅動、URL、遠端設定一次搞定

     編輯:Java 相關知識

核心差異:SQL Server 2000 vs 2005 驅動與 URL

許多遷移專案因驅動類別名稱與 URL 格式未更新而失敗,請務必對照下表:

項目SQL Server 2000SQL Server 2005
Driver Classcom.microsoft.jdbc.sqlserver.SQLServerDrivercom.microsoft.sqlserver.jdbc.SQLServerDriver
JDBC URLjdbc:microsoft:sqlserver://localhost:1433;DatabaseName=samplejdbc:sqlserver://localhost:1433;DatabaseName=sample
⚠️ 注意:2005 版去掉了 microsoft: 前綴,包名也從 jdbc.sqlserver 改為 sqlserver.jdbc。若專案同時支援兩版,建議用條件判斷或工廠模式動態載入。

伺服器端必要設定:三步走

1. 啟用遠端連線

SQL Server Management Studio → 右鍵伺服器屬性 → 連線 → 勾選 允許遠端連線至此伺服器。

啟用遠端連線設定

2. 啟用 TCP/IP 協定

SQL Server 組態管理員 → SQL Server 2005 網路組態 → MSSQLSERVER 的通訊協定 → TCP/IP → 右鍵啟用。

啟用 TCP/IP 協定

3. 固定 TCP 通訊埠(預設 1433)

TCP/IP 屬性 → IP 位址 分頁 → IPAll 區段 → TCP 通訊埠 填 1433,清空 TCP 動態通訊埠。

固定 TCP 通訊埠

💡 修改後必須重啟 SQL Server 服務才生效。

完整 Java 連線範例

import java.sql.*;

public class SqlServer2005Conn {
    public static void main(String[] args) {
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String url = "jdbc:sqlserver://192.168.1.100:1433;DatabaseName=MyDB";
        String user = "sa";
        String pwd = "yourStrongPassword";

        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url, user, pwd);
            System.out.println("✅ 連線成功!Catalog: " + conn.getCatalog());

            // 簡單測試查詢
            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) {
            System.err.println("❌ 連線失敗: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

常見錯誤與排查清單

錯誤現象可能原因解決方案
ClassNotFoundException未引入 sqljdbc.jar 或 mssql-jdbc.jarMaven: com.microsoft.sqlserver:mssql-jdbc:12.4.1.jre11
Connection refused防火牆攔截、TCP/IP 未啟用、Port 錯誤檢查 1433 通訊埠、防火牆規則、SQL 組態管理員
Login failed for user帳號/密碼錯誤、SQL Server 驗證模式為 Windows OnlySSMS → 伺服器屬性 → 安全性 → 選「SQL Server 和 Windows 驗證模式」→ 重啟服務
The TCP/IP connection to the host has failed主機名稱解析失敗、實例名稱錯誤用 IP 直連;若為具名實例 URL 加 ;instanceName=INST

進階建議

  • 連線池:生產環境務必使用 HikariCP / Druid / Tomcat JDBC Pool,避免頻繁建立連線開銷。
  • 參數化查詢:全部使用 PreparedStatement,防 SQL 注入並利用執行計畫快取。
  • 驅動版本:優先使用 Microsoft 官方最新 mssql-jdbc 驅動,支援 JDBC 4.2+、SSL 加密、Always Encrypted 等新特性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved