Java访问SQL Server数据库是Java企业级应用开发中的常见需求,通常通过JDBC(Java Database Connectivity)技术实现,JDBC是Java提供的标准数据库访问API,允许Java程序与各种数据库进行交互,以下是详细的实现步骤和注意事项。
环境准备
在开始之前,需要确保以下环境已正确配置:
- Java开发环境:安装JDK(建议1.8或更高版本)并配置环境变量。
- SQL Server数据库:确保SQL Server已安装并运行,创建好目标数据库和表。
- JDBC驱动:下载SQL Server的JDBC驱动程序(如JDBC 4.0或更高版本),并将其添加到项目的类路径中,驱动程序可通过Microsoft官网下载,例如
mssql-jdbc-x.x.x.jre11.jar(对应JDK 11)。
添加JDBC驱动
在Java项目中添加JDBC驱动的方式取决于项目类型:
- Maven项目:在
pom.xml中添加依赖:<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>9.4.0.jre11</version> </dependency> - 非Maven项目:下载JAR文件后,将其放入项目的
lib目录,并在IDE中添加到库路径。
加载JDBC驱动
Java程序需要加载JDBC驱动才能与数据库通信,通过Class.forName()方法加载驱动类:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
注意:JDBC 4.0及以上版本支持自动加载驱动,通常可以省略此步骤。
建立数据库连接
使用DriverManager.getConnection()方法获取数据库连接,连接字符串的格式为:

jdbc:sqlserver://[serverName]:[port];databaseName=[dbName];user=[user];password=[password];
示例代码:
String url = "jdbc:sqlserver://localhost:1433;databaseName=TestDB;user=sa;password=123456"; Connection conn = DriverManager.getConnection(url);
参数说明:
serverName:SQL Server服务器地址(本地为localhost)。port:端口号(默认为1433)。databaseName:数据库名称。user和password:数据库用户名和密码。
创建执行SQL语句的对象
通过Connection对象创建Statement或PreparedStatement:
- Statement:用于执行静态SQL语句(不推荐,存在SQL注入风险)。
- PreparedStatement:用于执行预编译SQL语句(推荐,安全性更高)。
示例:

String sql = "SELECT * FROM Users WHERE id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); // 设置参数
执行SQL语句
根据需求选择执行方法:
- 查询(SELECT):使用
executeQuery(),返回ResultSet对象。 - 更新(INSERT/UPDATE/DELETE):使用
executeUpdate(),返回受影响的行数。
示例查询:
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
System.out.println("Name: " + name);
}
处理结果集
ResultSet对象包含查询结果,通过next()方法遍历行,通过getXXX()方法获取列值(如getString()、getInt()等)。
关闭资源
为避免资源泄漏,需按顺序关闭ResultSet、Statement和Connection:

if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close();
建议使用try-with-resources语句自动关闭资源:
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery()) {
// 处理结果
}
常见问题与解决方案
- 连接超时:检查SQL Server服务是否启动,端口是否开放,防火墙是否阻止连接。
- 认证失败:确认用户名、密码正确,并检查SQL Server的认证模式(Windows或混合模式)。
- 驱动版本不匹配:确保JDBC驱动版本与JDK版本兼容(如JDK 11使用JDBC 4.2或更高版本)。
完整示例代码
import java.sql.*;
public class SQLServerExample {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;databaseName=TestDB;user=sa;password=123456";
String sql = "SELECT id, name FROM Users";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
System.out.println("IDtName");
while (rs.next()) {
System.out.println(rs.getInt("id") + "t" + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
相关问答FAQs
问题1:如何解决SQL Server连接中的“登录失败”错误?
解答:该错误通常由以下原因导致:1)用户名或密码错误;2)SQL Server未启用混合认证模式(需在SQL Server配置管理器中设置);3)数据库用户权限不足,可通过检查SQL Server日志、重置密码或授予用户权限解决。
问题2:JDBC连接池有什么作用?如何配置?
解答:连接池用于管理数据库连接,避免频繁创建和销毁连接的性能开销,常用连接池有HikariCP、DBCP等,以HikariCP为例,配置步骤如下:
- 添加依赖:
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version> </dependency> - 创建数据源:
HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:sqlserver://localhost:1433;databaseName=TestDB"); config.setUsername("sa"); config.setPassword("123456"); HikariDataSource ds = new HikariDataSource(config); - 从连接池获取连接:
try (Connection conn = ds.getConnection()) { // 执行SQL }
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/246162.html