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

Java 使用 JDBC 連接 SQL Server 2012 完整指南

     編輯:關於SqlServer

前言

SQL Server 2012 引入了新的 JDBC 驅動程式版本,支援 JDBC 4.0 規格與新功能(如 AlwaysOn、ColumnStore 索引等)。本文將說明如何在 Java 專案中正確配置 Microsoft JDBC Driver for SQL Server,並提供連線範例與常見問題解決方案。

一、取得 JDBC 驅動程式

方法 1:Maven 依賴(推薦)

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

最新版本請參考 Microsoft JDBC Driver for SQL Server GitHub。

方法 2:手動下載 JAR

  1. 前往 官方下載頁面。
  2. 下載 sqljdbc__enu.tar.gz 或 .zip。
  3. 解壓後取得 mssql-jdbc-.jar,加入專案類別路徑。

二、連線字串格式

1. 標準連線(預設執行個體,連接埠 1433)

jdbc:sqlserver://localhost:1433;databaseName=YourDB;user=sa;password=YourPass;encrypt=true;trustServerCertificate=true;

2. 具名執行個體連線

jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=YourDB;user=sa;password=YourPass;encrypt=true;trustServerCertificate=true;

3. 使用整合驗證(Windows Authentication)

jdbc:sqlserver://localhost:1433;databaseName=YourDB;integratedSecurity=true;encrypt=true;trustServerCertificate=true;

需將 sqljdbc_auth.dll(x64/x86 依 JVM 位元數)放入 java.library.path 指定目錄。

關鍵參數說明

  • encrypt=true:SQL Server 2012+ 預設要求加密連線。
  • trustServerCertificate=true:開發/測試環境可略過憑證驗證;生產環境建議設為 false 並部署有效憑證。
  • loginTimeout、socketTimeout:可依需求設定連線/讀取逾時(毫秒)。

三、完整 Java 連線範例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SqlServerJdbcDemo {
    public static void main(String[] args) {
        String url = "jdbc:sqlserver://192.168.1.100:1433;"
                   + "databaseName=TestDB;"
                   + "user=app_user;"
                   + "password=P@ssw0rd;"
                   + "encrypt=true;"
                   + "trustServerCertificate=true;";

        try (Connection conn = DriverManager.getConnection(url);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT @@VERSION AS version")) {

            if (rs.next()) {
                System.out.println("連線成功,SQL Server 版本:" + rs.getString("version"));
            }
        } catch (Exception e) {
            System.err.println("連線失敗:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

四、連線池配置(HikariCP 範例)

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:sqlserver://192.168.1.100:1433;databaseName=TestDB;encrypt=true;trustServerCertificate=true;");
config.setUsername("app_user");
config.setPassword("P@ssw0rd");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

HikariDataSource ds = new HikariDataSource(config);

五、SQL Server 2012 端必備設定

  1. 啟用 TCP/IP:SQL Server Configuration Manager → 啟用 TCP/IP,設定連接埠 1433。
  2. 允許遠程連接:SSMS → 伺服器屬性 → 連接 → 勾選「允許遠程連接」。
  3. 建立 SQL 登入:安全性 → 登入 → 新增登入 → SQL Server 驗證,指派資料庫角色(如 db_datareader/db_datawriter)。
  4. 防火牆開放 1433:Windows 防火牆輸入規則新增 TCP 1433。

六、常見錯誤與解決

錯誤訊息可能原因解決方式
The TCP/IP connection to the host has failedIP/連接埠錯誤、防火牆阻擋、TCP/IP 未啟用檢查 IP、連接埠、防火牆、SQL Server Configuration Manager
Login failed for user 'sa'密碼錯誤、帳號停用、驗證模式非混合模式重設密碼、啟用帳號、SSMS 改為 SQL Server 和 Windows 驗證模式
The driver could not establish a secure connection憑證不受信任、JDK 版本不支援 TLS 1.2設定 trustServerCertificate=true 或部署有效憑證;升級 JDK 至 8u161+
No suitable driver foundJDBC 驅動未載入、類別路徑遺漏確認 Maven 依賴或 JAR 已加入 classpath

七、最佳實務建議

  • 生產環境務必使用 連線池(HikariCP、Druid、Tomcat JDBC Pool)。
  • 啟用 PreparedStatement 快取 提升重複查詢效能。
  • 將資料庫認證存放於 設定檔/環境變數/密碼管理服務,勿硬編碼。
  • 針對長時間運行查詢設定 queryTimeout 避免資源耗盡。
  • 定期更新 JDBC 驅動版本以修補安全性漏洞並支援新功能。

掌握上述設定與範例,即可在 Java 應用程式中穩定、高效地連接 SQL Server 2012 資料庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved