第一步:环境准备
在开始编码之前,请确保您的环境已经准备就绪。

-
Java 开发环境 (JDK):
- 确保您已经安装了 JDK (JDK 8, 11, 17 等),并且配置好了
JAVA_HOME环境变量。 - 您可以使用
java -version和javac -version命令来验证安装。
- 确保您已经安装了 JDK (JDK 8, 11, 17 等),并且配置好了
-
SQL Server 2008 数据库:
- 您需要有一台正在运行的 SQL Server 2008 实例。
- 您需要知道以下连接信息:
- 服务器地址:
localhost(如果本地安装) 或 IP 地址 (如168.1.100)。 - 端口: 默认为
1433,如果不是默认端口,需要明确指定。 - 数据库名称: 您要连接的数据库,
TestDB。 - 用户名和密码: 用于认证的凭据。
- 服务器地址:
-
Java IDE (推荐):
像 IntelliJ IDEA, Eclipse 或 VS Code 这样的集成开发环境,可以方便地管理项目和依赖。
(图片来源网络,侵删)
第二步:下载并配置 SQL Server JDBC 驱动
Java 应用程序需要一个“驱动程序”来与数据库进行通信,SQL Server 的驱动程序由 Microsoft 提供。
-
下载驱动:
- 访问 Microsoft 官方下载页面:Microsoft JDBC Driver for SQL Server
- 重要提示: 请选择与您的 SQL Server 版本 (2008) 和 JDK 版本 兼容的驱动。
- 对于 SQL Server 2008,推荐使用 JDBC Driver 6.0, 6.2, 6.4 或 4.2 等较新的版本,因为它们对旧版 SQL Server 有更好的兼容性。不推荐使用最新版本,因为它们可能不再支持 SQL Server 2008。
- 下载文件通常是一个
.zip压缩包。
-
添加驱动到项目:
- 解压下载的
.zip文件。 - 在解压后的目录中,找到一个名为
sqljdbc_*.jar的文件(sqljdbc42.jar),这就是我们需要的 JDBC 驱动库。 - 在 Maven/Gradle 项目中添加依赖 (推荐):
这是最简单、最推荐的方式,可以自动管理依赖版本。
- Maven (
pom.xml):<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <!-- 请根据您下载的版本选择合适的版本号 --> <!-- 对于 SQL Server 2008, 6.4 是一个不错的选择 --> <version>6.4.0.jre8</version> </dependency> - Gradle (
build.gradle):implementation 'com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre8'
- Maven (
- 在非 Maven/Gradle 项目中手动添加:
- 将
sqljdbc_*.jar文件复制到您的项目的lib文件夹下。 - 在您的 IDE 中,右键点击该 JAR 文件,选择 "Add as Library..." (添加为库...) 或类似选项,将其添加到项目的构建路径中。
- 将
- 解压下载的
第三步:编写 Java 连接代码
这里提供两种方式:传统的 Class.forName 方式 和 推荐的现代 try-with-resources 方式。

使用 try-with-resources (推荐)
这种方式可以自动关闭资源(如连接、语句、结果集),是现代 Java 编程的最佳实践,能有效避免资源泄漏。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class SqlServerConnector {
// --- 请根据您的实际情况修改以下信息 ---
private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=TestDB;encrypt=false;trustServerCertificate=false;";
private static final String USER = "sa"; // 您的数据库用户名
private static final String PASS = "your_password"; // 您的数据库密码
// ------------------------------------
public static void main(String[] args) {
// try-with-resources 语句,确保 Connection, Statement, ResultSet 被自动关闭
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 'Hello, SQL Server 2008!' AS Greeting")) {
// 检查连接是否成功
if (conn != null) {
System.out.println("连接成功!");
}
// 处理查询结果
while (rs.next()) {
// 通过列名获取数据,更安全
String greeting = rs.getString("Greeting");
System.out.println("从数据库获取到的信息: " + greeting);
}
} catch (SQLException e) {
// 捕获并打印 SQL 异常
System.err.println("连接数据库失败!");
e.printStackTrace();
}
}
}
使用 Class.forName (传统方式)
在一些非常老的代码或特定环境中,您可能会看到这种方式,它显式地加载驱动类。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class SqlServerConnectorOld {
// --- 请根据您的实际情况修改以下信息 ---
private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=TestDB";
private static final String USER = "sa";
private static final String PASS = "your_password";
// ------------------------------------
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 加载 JDBC 驱动 (对于新版JDBC驱动,这步通常不是必须的,但保留它更兼容)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 2. 建立连接
System.out.println("正在连接到数据库...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("连接成功!");
// 3. 创建 Statement 对象
stmt = conn.createStatement();
String sql = "SELECT 'Hello from legacy code!' AS Message";
rs = stmt.executeQuery(sql);
// 4. 处理结果集
while (rs.next()) {
String message = rs.getString("Message");
System.out.println("数据库返回消息: " + message);
}
} catch (ClassNotFoundException e) {
System.err.println("找不到 JDBC 驱动类!");
e.printStackTrace();
} catch (SQLException e) {
System.err.println("数据库操作出错!");
e.printStackTrace();
} finally {
// 5. 关闭资源 (非常重要!)
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
第四步:常见问题与排查
连接失败时,请按照以下步骤排查:
-
No suitable driver found for jdbc:sqlserver://...:- 原因: JVM 找不到对应的 JDBC 驱动。
- 解决方案:
- 确认您已经将
sqljdbc_*.jar文件正确添加到了项目的 classpath 中。 - 如果使用 Maven/Gradle,确认
pom.xml或build.gradle中的依赖配置正确,并且执行了mvn install或gradle build。 - 检查 JAR 文件名是否正确(
sqljdbc42.jar而不是sqljdbc.jar)。
- 确认您已经将
-
Login failed for user 'sa'.或The TCP/IP connection to the host has failed.:- 原因: 通常是认证或网络问题。
- 解决方案:
- 检查用户名和密码: 确保输入的用户名
sa和密码完全正确。 - 检查 SQL Server 服务: 确保您的 SQL Server 服务正在运行,可以在 Windows 的 "服务" 中找到 "SQL Server (...)" 并启动它。
- 检查 TCP/IP 协议:
- 打开 SQL Server Configuration Manager。
- 展开 "SQL Server 网络配置" -> "SQLEXPRESS 的协议" (或您的实例名)。
- 检查用户名和密码: 确保输入的用户名
