Java访问SQL Server数据库的完整指南
环境准备与依赖配置
在Java中访问SQL Server数据库,首先需要确保开发环境配置正确,以下是关键步骤:

- 安装JDK:确保已安装Java开发工具包(JDK),建议使用JDK 8或更高版本。
- 添加JDBC驱动:SQL Server提供了官方的JDBC驱动(JDBC Driver for SQL Server),需将其添加到项目中。
- Maven项目:在
pom.xml中添加以下依赖:<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>9.4.0.jre11</version> </dependency> - 非Maven项目:从Microsoft官网下载JDBC驱动JAR文件,并将其添加到项目的类路径中。
- Maven项目:在
- 数据库连接信息:准备好SQL Server数据库的连接参数,包括服务器地址、端口、数据库名称、用户名和密码。
建立数据库连接
连接SQL Server数据库是操作数据的第一步,以下是使用JDBC连接数据库的详细步骤:
- 加载驱动类:通过
Class.forName()方法加载JDBC驱动类。Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); - 创建连接URL:根据数据库配置构建连接字符串,格式如下:
String url = "jdbc:sqlserver://服务器地址:端口;databaseName=数据库名;encrypt=true;trustServerCertificate=true;";
encrypt=true:启用SSL加密(可选,但推荐生产环境使用)。trustServerCertificate=true:信任服务器证书(测试环境可用,生产环境需配置证书)。
- 获取Connection对象:使用
DriverManager.getConnection()方法建立连接。Connection connection = DriverManager.getConnection(url, "用户名", "密码");
执行SQL语句
连接成功后,可以通过Statement或PreparedStatement对象执行SQL语句。
使用Statement执行静态SQL
适用于SQL语句固定且无参数的场景:
Statement statement = connection.createStatement();
String sql = "SELECT * FROM Users";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
}
使用PreparedStatement执行动态SQL
推荐使用PreparedStatement,可以防止SQL注入并提高性能:

String sql = "INSERT INTO Users (name, age) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "张三");
preparedStatement.setInt(2, 25);
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("受影响的行数: " + rowsAffected);
处理结果集
执行查询后,通过ResultSet对象获取结果,以下是常用操作:
- 遍历结果集:
while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); // 处理数据 } - 获取不同类型的数据:
getString():获取字符串类型。getInt():获取整数类型。getTimestamp():获取时间戳类型。
事务管理
事务是数据库操作的重要概念,确保一组操作要么全部成功,要么全部失败,以下是事务管理的基本步骤:
- 关闭自动提交:
connection.setAutoCommit(false);
- 执行SQL操作:
preparedStatement.executeUpdate();
- 提交事务:
connection.commit();
- 回滚事务(发生异常时):
connection.rollback();
资源释放
为避免资源泄漏,需按顺序关闭ResultSet、Statement和Connection对象:
if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); if (connection != null) connection.close();
推荐使用try-with-resources语句自动关闭资源:

try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
// 操作代码
} catch (SQLException e) {
e.printStackTrace();
}
常见问题与解决方案
- 连接超时:检查网络连接或调整
loginTimeout参数。 - 驱动版本不兼容:确保JDBC驱动与JDK版本匹配。
- SSL证书问题:生产环境中需正确配置证书,或暂时禁用SSL(不推荐)。
通过以上步骤,可以轻松实现Java与SQL Server数据库的交互,关键点包括:正确配置JDBC驱动、使用PreparedStatement防止SQL注入、合理管理事务和资源,在实际开发中,建议结合连接池(如HikariCP)优化数据库连接性能,确保应用的稳定性和高效性。








