Javaweb使用JDBC连接数据库

2025-10-16 04:16:46

剧情档案

在 Java 中使用 JDBC (Java Database Connectivity) 来连接和操作数据库是一种常见的方法。下面是 JDBC 操作数据库的完整流程,包括加载驱动、创建连接...

在 Java 中使用 JDBC (Java Database Connectivity) 来连接和操作数据库是一种常见的方法。下面是 JDBC 操作数据库的完整流程,包括加载驱动、创建连接、执行 SQL 语句、处理结果集以及关闭资源等步骤。

JDBC 全流程步骤:

准备数据库驱动

确保项目中已引入对应数据库的 JDBC 驱动。

例如,MySQL 的 JDBC 驱动 jar 包:mysql-connector-java-x.x.x.jar。

如果使用 Maven 管理依赖:

mysql mysql-connector-java 8.0.33

1. 加载数据库驱动

首先需要加载并注册 JDBC 驱动程序,通常使用 Class.forName() 方法来加载。

Class.forName("com.mysql.cj.jdbc.Driver");

2. 创建数据库连接

使用 DriverManager.getConnection() 来获取数据库连接,通常需要提供数据库 URL、用户名、密码。

String url = "jdbc:mysql://localhost:3306/mydatabase"; // 数据库的 URL

String username = "root"; // 数据库用户名

String password = "password"; // 数据库密码

Connection connection = DriverManager.getConnection(url, username, password);

3. 创建 SQL 语句对象

通过 Connection 对象的 createStatement() 方法或 prepareStatement() 方法创建 SQL 语句对象。

使用 Statement 执行静态 SQL 语句

使用 PreparedStatement 执行参数化 SQL 语句(推荐,因为可以防止 SQL 注入)

使用 Statement 示例:

Statement statement = connection.createStatement();

使用 PreparedStatement 示例:

String sql = "SELECT * FROM users WHERE username = ?";

PreparedStatement preparedStatement = connection.prepareStatement(sql);

preparedStatement.setString(1, "Alice");

4. 执行 SQL 语句

使用 Statement 或 PreparedStatement 执行 SQL 语句,并获取结果。

对于 SELECT 查询,使用 executeQuery() 方法返回结果集 (ResultSet)。

对于 INSERT、UPDATE、DELETE 操作,使用 executeUpdate() 方法返回受影响的行数。

执行查询操作:

ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

执行更新操作:

int rowsAffected = preparedStatement.executeUpdate();

5. 处理结果集

当执行查询操作时,结果集保存在 ResultSet 对象中,可以通过 next() 方法迭代读取每一行的结果。

while (resultSet.next()) {

int id = resultSet.getInt("id");

String username = resultSet.getString("username");

String email = resultSet.getString("email");

System.out.println("ID: " + id + ", Username: " + username + ", Email: " + email);

}

6. 关闭资源

完成数据库操作后,需要关闭 ResultSet、Statement、Connection 以释放资源。通常使用 try-with-resources 语法来自动关闭资源。

try (Connection connection = DriverManager.getConnection(url, username, password);

Statement statement = connection.createStatement();

ResultSet resultSet = statement.executeQuery("SELECT * FROM users")) {

while (resultSet.next()) {

System.out.println(resultSet.getString("username"));

}

} catch (SQLException e) {

e.printStackTrace();

}

或者手动关闭资源:

if (resultSet != null) resultSet.close();

if (statement != null) statement.close();

if (connection != null) connection.close();

完整示例代码

以下是一个简单的 JDBC 完整示例,包括查询和插入数据的实现:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class JDBCDemo {

public static void main(String[] args) {

String url = "jdbc:mysql://localhost:3306/mydatabase";

String username = "root";

String password = "password";

Connection connection = null;

Statement statement = null;

ResultSet resultSet = null;

try {

// 1. 加载 MySQL JDBC 驱动

Class.forName("com.mysql.cj.jdbc.Driver");

// 2. 创建数据库连接

connection = DriverManager.getConnection(url, username, password);

// 3. 创建 SQL 语句对象

String sql = "SELECT * FROM users";

statement = connection.createStatement();

// 4. 执行 SQL 查询

resultSet = statement.executeQuery(sql);

// 5. 处理结果集

while (resultSet.next()) {

int id = resultSet.getInt("id");

String user = resultSet.getString("username");

String email = resultSet.getString("email");

System.out.println("ID: " + id + ", Username: " + user + ", Email: " + email);

}

// 示例:插入数据

String insertSql = "INSERT INTO users (username, email) VALUES (?, ?)";

PreparedStatement preparedStatement = connection.prepareStatement(insertSql);

preparedStatement.setString(1, "Bob");

preparedStatement.setString(2, "bob@example.com");

int rowsInserted = preparedStatement.executeUpdate();

System.out.println("Inserted " + rowsInserted + " rows.");

} catch (SQLException | ClassNotFoundException e) {

e.printStackTrace();

} finally {

// 6. 关闭资源

try {

if (resultSet != null) resultSet.close();

if (statement != null) statement.close();

if (connection != null) connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

JDBC 操作步骤小结:

加载驱动:使用 Class.forName() 加载 JDBC 驱动程序。

创建连接:使用 DriverManager.getConnection() 创建数据库连接。

创建语句:使用 createStatement() 或 prepareStatement() 创建 SQL 语句对象。

执行 SQL 语句:使用 executeQuery()(查询)或 executeUpdate()(更新、插入、删除)执行 SQL 语句。

处理结果:通过 ResultSet 处理查询结果。

关闭资源:最后关闭 ResultSet、Statement 和 Connection 以释放资源。

这种结构是典型的 JDBC 工作流程,适用于大多数数据库操作。