下面我将为您提供详细的步骤、代码示例和可能遇到的问题解决方案。

核心步骤概览
- 下载 JDBC 驱动程序:获取适用于 SQL Server 2005 的 JDBC 驱动(通常是
sqljdbc.jar)。 - 配置项目环境:将驱动程序 JAR 文件添加到您的 Java 项目的类路径中。
- 编写 Java 连接代码:使用 JDBC API 加载驱动、建立连接、执行查询并处理结果。
- 处理资源:确保正确关闭
Connection,Statement, 和ResultSet对象,以避免资源泄漏。
第 1 步:下载 JDBC 驱动程序
对于 SQL Server 2005,您需要下载 SQL Server 2005 JDBC Driver。
- 下载地址:您可以在微软的归档软件库中找到它。
- Microsoft SQL Server 2005 JDBC Driver 1.2
- 请根据您的 Java 版本选择下载 "sqljdbc.jar"(适用于 JRE 5.0 和 JRE 6.0)或 "sqljdbc4.jar"(适用于 JRE 6.0)。通常推荐使用
sqljdbc4.jar,因为它支持 JDBC 4.0 规范,可以自动加载驱动,代码更简洁。
下载后,您会得到一个 ZIP 文件,解压后找到 sqljdbc.jar 或 sqljdbc4.jar 文件。
第 2 步:配置项目环境
您需要将下载的 JAR 文件添加到项目的类路径中。
对于 Eclipse IDE 用户:
- 在您的 Java 项目上右键单击,选择 Build Path -> Configure Build Path...。
- 在弹出的窗口中,切换到 Libraries 选项卡。
- 点击 Add External JARs... 按钮。
- 浏览并选择您刚刚下载的
sqljdbc.jar或sqljdbc4.jar文件。 - 点击 Apply and Close。
对于 IntelliJ IDEA 用户:
- 在您的项目结构中,找到 External Libraries。
- 右键单击,选择 Add JARs/Directories...。
- 浏览并选择您刚刚下载的 JAR 文件,然后点击 OK。
对于使用命令行编译和运行的用户:
您需要在编译和运行命令中使用 -cp (classpath) 参数来指定 JAR 文件的位置。

# 编译 (假设你的源文件在 src 目录下) javac -cp ".;C:\path\to\your\sqljdbc4.jar" src\YourClassName.java # 运行 java -cp ".;C:\path\to\your\sqljdbc4.jar" YourClassName
注意:在 Windows 系统中,类路径的分隔符是分号 ,而在 Linux 或 macOS 中是冒号 。
第 3 步:编写 Java 连接代码
这里提供两种连接方式:手动加载驱动(适用于 sqljdbc.jar)和自动加载驱动(推荐,适用于 sqljdbc4.jar)。
使用 sqljdbc4.jar (JDBC 4.0, 推荐)
这种方式更现代,代码更简洁,驱动程序会根据连接 URL 自动加载。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlServer2005Connector {
// 数据库连接信息 - 请根据您的实际情况修改
private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName";
private static final String USER = "your_username";
private static final String PASS = "your_password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 建立连接
// 对于 sqljdbc4.jar,Class.forName() 不是必须的,DriverManager 会自动加载驱动
// 但为了清晰和兼容性,有时还是会加上
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("正在连接到数据库...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("连接成功!");
// 2. 创建 Statement 对象
stmt = conn.createStatement();
String sql = "SELECT id, name, email FROM YourTableName";
// 3. 执行查询
rs = stmt.executeQuery(sql);
// 4. 处理结果集
System.out.println("数据库查询结果:");
while (rs.next()) {
// 通过列名获取数据,更具可读性
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
// 输出数据
System.out.print("ID: " + id);
System.out.print(", 姓名: " + name);
System.out.println(", 邮箱: " + email);
}
} catch (SQLException e) {
// 捕获 SQL 异常
e.printStackTrace();
} finally {
// 5. 关闭资源 (非常重要!)
// 关闭的顺序应该是 ResultSet -> Statement -> Connection
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
System.out.println("数据库连接已关闭。");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用 sqljdbc.jar (JDBC 3.0)
如果您只能找到 sqljdbc.jar,则需要手动加载驱动类。

// ... (其他代码与上面相同)
public class SqlServer2005ConnectorOld {
// ... (DB_URL, USER, PASS 与上面相同)
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 手动加载 JDBC 驱动类
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("正在连接到数据库...");
// 2. 建立连接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("连接成功!");
// ... (后续代码与方式一完全相同)
} catch (ClassNotFoundException e) {
// 如果找不到驱动类
System.err.println("找不到 SQL Server JDBC 驱动程序,请检查 JAR 文件是否在类路径中。");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// ... (关闭资源的代码与上面相同)
}
}
}
第 4 步:常见问题与解决方案
问题 1:ClassNotFoundException
- 错误信息:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver - 原因:Java 虚拟机在类路径中找不到
sqljdbc.jar文件。 - 解决方案:
- 确保您已经下载了正确的 JAR 文件(
sqljdbc.jar或sqljdbc4.jar)。 - 确保您已经将该 JAR 文件正确地添加到了项目的 Build Path 或 Classpath 中,检查您的 IDE 配置或命令行的
-cp参数。
- 确保您已经下载了正确的 JAR 文件(
问题 2:SQLException: The TCP/IP connection to the host has failed
- 错误信息:
The TCP/IP connection to the host localhost, port 1433 has failed... - 原因:这是最常见的连接问题,表示 Java 应用程序无法通过网络连接到 SQL Server 服务。
- 解决方案:
- 检查 SQL Server 服务是否正在运行:
- 打开 "服务" (Services) 窗口(在 Windows 中搜索
services.msc)。 - 找到名为
SQL Server (MSSQLSERVER)或类似名称的服务。 - 确保其 "状态" 是 "正在运行","启动类型" 是 "自动" 或 "手动"。
- 打开 "服务" (Services) 窗口(在 Windows 中搜索
- 检查 SQL Server 的 TCP/IP 协议是否已启用:
- 打开 SQL Server Configuration Manager。
- 展开 "SQL Server 网络配置"。
- 点击 "MSSQLSERVER 的协议"。
- 确保
TCP/IP协议是 已启用 的状态(右键 -> 启用)。 - 右键单击
TCP/IP-> 属性,检查 "IP 地址" 选项卡,确保IPAll下的 "TCP 端口" 是1433(默认值)。 - 重启 SQL Server 服务 以使配置生效。
- 检查 Windows 防火墙:
- Windows 防火墙可能阻止了 1433 端口的连接。
- 临时关闭防火墙进行测试,或者为 "sqlservr.exe" 添加防火墙例外,允许 1433 端口的入站连接。
- 检查连接 URL:
- 确认
DB_URL中的主机名(localhost)和端口(1433)是正确的,SQL Server 运行在另一台机器上,请使用其 IP 地址。
- 确认
- 检查 SQL Server 服务是否正在运行:
问题 3:SQLException: Login failed for user 'sa'
- 错误信息:
Login failed for user 'sa'. - 原因:用户名或密码错误,或者该用户没有权限访问数据库。
- 解决方案:
- 确认您使用的用户名和密码是正确的。
- 确认该用户(如
sa)有权限连接到 SQL Server 实例和访问指定的数据库。 - 您可以在 SQL Server Management Studio (SSMS) 中使用相同的凭据登录,以验证凭据是否有效。
连接 SQL Server 2005 的关键在于 找到正确的驱动程序 并 正确配置网络连接,虽然 SQL Server 2005 已经过时,但遵循以上步骤,您应该能够成功地在 Java 应用程序中连接到它。
最佳实践提示:
-
使用连接池:在实际生产应用中,不要每次都创建新连接,使用如 Apache DBCP, C3P0 或 HikariCP 等连接池来管理数据库连接,可以大大提高性能。
-
使用
try-with-resources:如果您使用的是 Java 7 或更高版本,可以使用try-with-resources语句来自动关闭资源,代码更安全简洁。// try-with-resources 示例 try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) { // 处理结果... while (rs.next()) { // ... } } catch (SQLException e) { e.printStackTrace(); } // conn, stmt, rs 会在此处自动关闭
