# Java JDBC常用接口和类详解
Java数据库连接(Java Database Connectivity,JDBC)是Java程序与数据库进行交互的重要工具,通过使用JDBC API,开发人员可以轻松地连接、查询和操作各种类型的数据库。本文将深入介绍Java JDBC中常用的接口和类,包括Connection、Statement、PreparedStatement、ResultSet等,并提供代码示例来演示它们的基本用法和功能。
## 1. Connection接口
Connection接口代表与数据库的连接,它是使用JDBC与数据库进行通信的入口点。通过Connection对象,可以创建和执行Statement、PreparedStatement和CallableStatement等对象,管理事务以及获取数据库的元数据信息。以下是Connection接口的一些常用方法:
- **createStatement()**: 创建一个Statement对象,用于执行静态的SQL语句。
- **prepareStatement(String sql)**: 创建一个PreparedStatement对象,用于执行预编译的SQL语句,并支持参数化查询。
- **prepareCall(String sql)**: 创建一个CallableStatement对象,用于执行数据库存储过程。
- **commit()**: 提交当前事务,使得之前的操作永久性地保存到数据库中。
- **rollback()**: 回滚当前事务,撤销之前的操作。
- **close()**: 关闭连接,释放资源。
以下是一个简单的示例代码,演示了如何通过Connection接口建立与MySQL数据库的连接:
```java import java.sql.*; public class ConnectionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try (Connection connection = DriverManager.getConnection(url, username, password)) { // 连接建立成功 System.out.println("连接成功!"); } catch (SQLException e) { e.printStackTrace(); } } } ```
## 2. Statement接口
Statement接口用于执行静态的SQL语句并返回结果。它适用于不需要参数化的简单SQL语句,但在实际开发中,一般推荐使用PreparedStatement来执行SQL语句以防止SQL注入攻击。Statement接口的一些常用方法包括:
- **executeQuery(String sql)**: 执行查询操作并返回ResultSet对象。
- **executeUpdate(String sql)**: 执行更新操作(如插入、更新、删除)并返回受影响的行数。
- **close()**: 关闭Statement对象,释放资源。
以下是一个简单的示例代码,演示了如何使用Statement接口执行查询操作:
```java import java.sql.*; public class StatementExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; 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("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name") + ", Age: " + resultSet.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } } } ```
## 3. PreparedStatement接口
PreparedStatement接口继承自Statement接口,用于执行预编译的SQL语句,并支持参数化查询,可以有效地防止SQL注入攻击。使用PreparedStatement可以提高性能并增强安全性。PreparedStatement接口的一些常用方法包括:
- **setXxx()**: 设置SQL语句中的参数值,其中Xxx表示参数类型(如setInt、setString等)。
- **executeQuery()**: 执行查询操作并返回ResultSet对象。
- **executeUpdate()**: 执行更新操作(如插入、更新、删除)并返回受影响的行数。
- **close()**: 关闭PreparedStatement对象,释放资源。
以下是一个简单的示例代码,演示了如何使用PreparedStatement接口执行参数化查询操作:
```java import java.sql.*; public class PreparedStatementExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try (Connection connection = DriverManager.getConnection(url, username, password); PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM users WHERE age > ?")) { preparedStatement.setInt(1, 25); // 设置参数值 ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name") + ", Age: " + resultSet.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } } } ```
## 4. ResultSet接口
ResultSet接口代表SQL查询的结果集,通过ResultSet对象可以遍历查询结果并获取相应的数据。ResultSet接口的一些常用方法包括:
- **next()**: 将光标移动到下一行,如果有数据则返回true,否则返回false。
- **getXxx()**: 获取当前行指定列的数据值,其中Xxx表示数据类型(如getInt、getString等)。
以下是一个简单的示例代码,演示了如何使用ResultSet接口处理查询结果:
```java import java.sql.*; public class ResultSetExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; 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("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name") + ", Age: " + resultSet.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } } } ```
通过本文的介绍和示例代码,读者可以更加深入地了解Java JDBC中常用的接口和类,包括Connection、Statement、PreparedStatement、ResultSet等,从而更好地应用这些API来实现与数据库的交互操作。使用JDBC可以帮助开发人员编写出高效、安全