Java与SQL数据库连接是Java开发中常见的操作,主要通过JDBC(Java Database Connectivity)实现,JDBC是Java提供的一套标准API,用于执行SQL语句并处理结果,本文将详细介绍Java如何与SQL数据库建立连接,包括环境准备、加载驱动、建立连接、执行SQL语句以及关闭资源等步骤。

环境准备
在开始之前,需要确保已安装Java开发环境(JDK)和目标数据库(如MySQL、PostgreSQL等),需要下载对应数据库的JDBC驱动程序,MySQL的JDBC驱动为mysql-connector-java.jar,并将其添加到项目的类路径中,如果是Maven项目,可以在pom.xml中添加依赖,例如MySQL的依赖为:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
加载数据库驱动
JDBC驱动是Java与数据库通信的桥梁,在代码中,需要显式加载驱动类,以MySQL为例,使用Class.forName()方法加载驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
注意:对于JDBC 4.0及以上版本,驱动会自动加载,但显式加载仍是良好实践。
建立数据库连接
加载驱动后,使用DriverManager类的getConnection()方法建立连接,该方法需要三个参数:数据库URL、用户名和密码,MySQL的URL格式为:
String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String username = "用户名"; String password = "密码"; Connection connection = DriverManager.getConnection(url, username, password);
localhost是数据库服务器地址,3306是默认端口,数据库名是要连接的数据库。

执行SQL语句
建立连接后,可以通过Connection对象创建Statement或PreparedStatement对象来执行SQL语句。Statement用于执行静态SQL,而PreparedStatement用于执行动态SQL,更安全高效,以下示例使用PreparedStatement:
String sql = "SELECT * FROM users WHERE username = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, "example"); ResultSet resultSet = preparedStatement.executeQuery();
ResultSet对象包含查询结果,可以通过遍历结果集获取数据。
处理结果集
遍历ResultSet时,使用next()方法移动到下一行,并通过getXXX()方法获取列值。
while (resultSet.next()) {
String username = resultSet.getString("username");
int age = resultSet.getInt("age");
System.out.println("Username: " + username + ", Age: " + age);
}
关闭资源
操作完成后,需关闭ResultSet、Statement和Connection对象以释放资源,推荐使用try-with-resources语句自动关闭:
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery()) {
// 执行SQL和结果集处理
} catch (SQLException e) {
e.printStackTrace();
}
异常处理
数据库操作可能抛出SQLException,需捕获并处理异常,常见的异常包括连接失败、SQL语法错误等,可以通过try-catch块捕获异常,并记录日志或提示用户。

FAQs
Q1: 如何解决“No suitable driver found”错误?
A1: 此错误通常是因为未加载JDBC驱动或URL格式错误,确保驱动类名正确(如com.mysql.cj.jdbc.Driver),并检查URL是否包含正确的协议(如jdbc:mysql://)。
Q2: 为什么使用PreparedStatement而不是Statement?
A2: PreparedStatement可以防止SQL注入攻击,且预编译SQL语句后重复执行效率更高,对于动态SQL或用户输入,PreparedStatement是更安全的选择。