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

Java 連接 SQL Server 2000 完整指南:JDBC 驅動、連接字串與常見錯誤排查

     編輯:Java 程式設計入門

前置準備

  1. 下載驅動:Microsoft SQL Server 2000 Driver for JDBC(建議 SP3 版),解壓取得 msbase.jar、mssqlserver.jar、msutil.jar 三個 JAR。
  2. 加入類路徑:IDE 專案依賴、CLASSPATH 環境變數、或應用伺服器 lib 目錄。
  3. SQL Server 打補丁:建議安裝 SP4,解決「Error establishing socket」等網路連線問題。

核心程式碼


import java.sql.*;

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

        try {
            Class.forName(driver);  // 載入驅動
            Connection conn = DriverManager.getConnection(url, user, pwd);
            System.out.println("連線成功!");

            // 簡單測試查詢
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT @@VERSION")) {
                if (rs.next()) System.out.println("版本: " + rs.getString(1));
            }
        } catch (ClassNotFoundException e) {
            System.err.println("驅動類別找不到:檢查 JAR 是否在 classpath");
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("連線失敗:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

連接字串詳細解析

片段說明
jdbc:microsoft:sqlserver:Microsoft JDBC 驅動協定前綴
//localhost:1433主機名/IP + 埠號(預設 1433)
;DatabaseName=pubs分號分隔屬性,指定資料庫名稱
;SelectMethod=cursor游標模式,避免大結果集記憶體溢位
;sendStringParametersAsUnicode=false提升中文參數效能

常見錯誤與解決方案

錯誤現象可能原因解決方法
ClassNotFoundException驅動 JAR 不在 classpath確認三個 JAR 全部加入;IDE 專案右鍵 Build Path → Add External JARs
Error establishing socketSQL Server 未啟用 TCP/IP、防火牆阻擋、版本不匹配1. SQL Server 組態管理器啟用 TCP/IP 協定
2. 防火牆開放 1433 埠
3. 安裝 SQL Server 2000 SP4 + JDBC SP3
Login failed for user 'sa'密碼錯誤、sa 帳號鎖定、混合驗證模式未啟用企業管理器 → 安全性 → 登入 → sa → 重設密碼/解鎖;伺服器屬性 → 安全性 → SQL Server 和 Windows 驗證模式
中文亂碼字元編碼不一致連接字串加 sendStringParametersAsUnicode=false;資料庫欄位用 nvarchar;JVM -Dfile.encoding=UTF-8
連線洩漏/耗盡未關閉 Connection/Statement/ResultSet全部使用 try-with-resources;或連線池(HikariCP、DBCP2)

現代化遷移建議

SQL Server 2000 已於 2013 年停止支援,生產環境強烈建議升級至 SQL Server 2019/2022。
驅動升級為 Microsoft JDBC Driver for SQL Server (mssql-jdbc):



<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.6.1.jre11</version>
</dependency>

新驅動類別:com.microsoft.sqlserver.jdbc.SQLServerDriver
新連接字串:jdbc:sqlserver://localhost:1433;databaseName=pubs;encrypt=true;trustServerCertificate=true

連線池整合範例


HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:sqlserver://localhost:1433;databaseName=pubs;encrypt=true;trustServerCertificate=true");
config.setUsername("sa");
config.setPassword("yourStrongPassword");
config.setMaximumPoolSize(20);
config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

HikariDataSource ds = new HikariDataSource(config);
// 使用 ds.getConnection() 獲取連線,自動管理生命週期
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved