- 准备工作:确保你有 SQL Server 2008 和 Java 开发环境。
- 获取 JDBC 驱动:下载并配置 SQL Server 的 JDBC 驱动程序。
- 编写 Java 代码:编写连接数据库、执行 SQL 语句、处理结果的代码。
- 处理常见问题:解决连接时可能遇到的典型错误。
第 1 步:准备工作
在开始之前,请确保你已经安装并配置好了以下环境:

- Java Development Kit (JDK):JDK 8 或更高版本。
- SQL Server 2008:确保你的 SQL Server 实例正在运行,并且你知道以下信息:
- 服务器地址:
localhost或服务器的 IP 地址。 - 端口:SQL Server 默认端口是
1433。 - 数据库名称:你想连接的数据库,
TestDB。 - 用户名和密码:具有访问该数据库权限的 SQL Server 登录凭据。
- 服务器地址:
- 集成开发环境 (IDE):如 IntelliJ IDEA、Eclipse 或 VS Code,用于编写和运行 Java 代码。
第 2 步:获取 JDBC 驱动
Java 程序需要通过 JDBC (Java Database Connectivity) 驱动来与数据库进行通信,对于 SQL Server,这个驱动由 Microsoft 提供。
驱动版本选择
对于 SQL Server 2008,你有两个主要选择:
-
JDBC Driver 4.0 (推荐用于 Java 7+):
- 文件名:
sqljdbc4.jar - 适用 Java 版本:Java Development Kit (JDK) 6, 7, 8
- 下载地址:Microsoft JDBC Driver 4.0 for SQL Server (选择 "Download JDBC 4.0" 下的
.jar文件)
- 文件名:
-
JDBC Driver 3.0 (用于 Java 5 或更低):
(图片来源网络,侵删)- 文件名:
sqljdbc.jar - 适用 Java 版本:JDK 5
- 下载地址:同上页面,选择 "Download JDBC 3.0"。
- 文件名:
建议:即使你使用的是 Java 8,也推荐使用 JDBC Driver 4.0 (sqljdbc4.jar),因为它提供了更好的性能和特性。
如何添加驱动到你的项目
在 IDE 中添加 (最简单)
以 IntelliJ IDEA 为例:
- 打开你的项目。
- 在左侧的
Project窗口中,右键点击你的项目名称,选择Open Module Settings(或按F4)。 - 转到
Libraries-> 点击 号 -> 选择Java。 - 找到你下载并解压的
sqljdbc4.jar文件,点击OK。 - IDE 会自动将这个 JAR 文件添加到项目的类路径中。
使用 Maven (推荐用于新项目)

如果你使用 Maven,可以在你的 pom.xml 文件中添加以下依赖,Maven 会自动帮你管理下载和依赖。
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<!-- 对于 SQL Server 2008, 推荐使用 4.0 版本对应的包 -->
<!-- 注意:这是新版的 Maven Group ID, 但驱动核心是兼容的 -->
<version>4.0.2206.100</version> <!-- 使用一个较新的 4.x 版本通常兼容性更好 -->
</dependency>
注意:较新的 Maven 包名可能是
mssql-jdbc,但其底层驱动与sqljdbc4.jar兼容,直接使用sqljdbc4.jar也是完全可行的。
第 3 步:编写 Java 代码
下面是一个完整的、可运行的 Java 示例,它演示了如何连接到 SQL Server 2008,执行查询,并处理结果集。
示例代码:SqlServerDemo.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlServerDemo {
// --- 数据库连接信息 ---
// 请根据你的实际情况修改这些值
private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=TestDB;encrypt=false;trustServerCertificate=false;";
private static final String USER = "sa"; // 你的 SQL Server 用户名
private static final String PASS = "your_password"; // 你的 SQL Server 密码
public static void main(String[] args) {
// 使用 try-with-resources 语句,确保连接、语句和结果集在使用后被自动关闭
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name, age FROM Users")) {
// 检查连接是否成功
if (conn != null) {
System.out.println("连接到 SQL Server 成功!");
}
System.out.println("ID\tName\tAge");
System.out.println("--------------------");
// 遍历结果集并打印数据
while (rs.next()) {
// 通过列名获取数据,更安全且可读性高
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + "\t" + name + "\t" + age);
}
} catch (SQLException e) {
// 捕获并打印 SQL 异常
System.err.println("数据库连接或查询失败: " + e.getMessage());
e.printStackTrace();
}
}
}
代码解析
-
加载驱动:
- 在 JDBC 4.0 之后,驱动会自动注册,所以通常不需要显式调用
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"),如果你使用的是旧版 JDBC 3.0 驱动 (sqljdbc.jar),则必须加上这句代码。
- 在 JDBC 4.0 之后,驱动会自动注册,所以通常不需要显式调用
-
连接字符串 (
DB_URL):jdbc:sqlserver://: 协议头,表示使用 SQL Server JDBC 驱动。localhost:1433: 服务器地址和端口。databaseName=TestDB: 指定要连接的数据库名。encrypt=false;trustServerCertificate=false;: 这是连接 SQL Server 2008 时常需要添加的参数,由于 SQL Server 2008 不支持现代的 TLS/SSL 加密方式,新版的 JDBC 驱动默认会尝试加密,导致连接失败,这两个参数告诉驱动不要尝试加密,如果你的服务器配置了 SSL,可以去掉这两个参数。
-
获取连接 (
DriverManager.getConnection):使用上面定义的 URL、用户名和密码建立连接。
-
创建语句 (
conn.createStatement):- 通过连接对象创建一个
Statement对象,用于执行 SQL 语句。
- 通过连接对象创建一个
-
执行查询 (
stmt.executeQuery):- 执行一个
SELECT查询,返回一个ResultSet对象,它包含了查询结果。
- 执行一个
-
处理结果 (
while (rs.next())):rs.next()将光标移动到下一行,如果存在下一行则返回true。rs.getInt("列名"),rs.getString("列名")等方法用于获取当前行中指定列的数据。
-
try-with-resources:- 这是 Java 7 引入的一个非常方便的特性,它确保了在
try语句块结束时,Connection,Statement, 和ResultSet等实现了AutoCloseable接口的对象会自动被关闭,从而避免了资源泄漏。
- 这是 Java 7 引入的一个非常方便的特性,它确保了在
第 4 步:处理常见问题
问题 1:The TCP/IP connection to the host has failed
- 错误信息:
java.net.ConnectException: Connection refused: connect - 原因:Java 程序无法连接到 SQL Server。
- 解决方案:
- 检查 SQL Server 服务:确保 SQL Server 服务正在运行,可以在 Windows 的 "服务" 中找到 "SQL Server (...)" 并启动它。
- 检查防火墙:Windows 防火墙可能阻止了
1433端口的连接,暂时关闭防火墙或为sqlservr.exe添加入站规则以允许1433端口。 - 检查 SQL Server 配置管理器:
- 打开 "SQL Server Configuration Manager"。
- 展开 "SQL Server 网络配置"。
- 确保
TCP/IP协议是已启用的,右键点击TCP/IP->属性->IP 地址选项卡,确保IPAll下的TCP端口是1433(并且没有其他冲突)。
问题 2:Login failed for user 'sa'
- 错误信息:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'sa'. - 原因:用户名或密码错误,或者
sa账户被禁用或锁定。 - 解决方案:
- 确认用户名和密码:仔细检查代码中的
USER和PASS变量是否正确。 - 启用
sa账户:- 使用 Windows 身份验证登录到 SQL Server Management Studio (SSMS)。
- 展开 "安全性" -> "登录名",右键点击
sa,选择 "属性"。 - 在 "常规" 页面,确保 "强制实施密码策略" 是未选中状态,并输入一个强密码。
- 在 "状态" 页面,确保 "登录" 选项是已启用的。
- 点击 "确定" 后,重启 SQL Server 服务使更改生效。
- 确认用户名和密码:仔细检查代码中的
问题 3:No suitable driver found for jdbc:sqlserver://...
- 错误信息:
java.sql.SQLException: No suitable driver found for jdbc:sqlserver://... - 原因:JVM 找不到对应的 JDBC 驱动。
- 解决方案:
- 确认 JAR 文件已添加:确保
sqljdbc4.jar已经正确地添加到你项目的类路径中,如果你使用的是 IDE,检查一下项目的库设置。 - 检查驱动版本:如果你使用的是 JDBC 3.0 驱动,请确保在代码开头添加了
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");。
- 确认 JAR 文件已添加:确保
希望这份详细的指南能帮助你成功地在 Java 中连接 SQL Server 2008!
