美文网首页
JDBC接口

JDBC接口

作者: M_lear | 来源:发表于2024-01-26 19:37 被阅读0次

JDBC(Java Database Connectivity)是 Java 编程语言中用于连接和执行数据库操作的一套 API。JDBC 提供了一种基于标准的方法来建立数据库连接、执行 SQL 语句、处理结果集等。以下是 JDBC 的一些主要接口:

1. DriverManager

用途: DriverManager 类是 JDBC 的管理层,用于管理 JDBC 驱动程序的加载和建立数据库连接。
关键方法:

  • getConnection(String url, String user, String password): 连接到数据库。

2. Connection

用途: Connection 接口代表数据库连接。它用于执行 SQL 语句和管理事务。
关键方法:

  • createStatement(), prepareStatement(String sql), prepareCall(String sql): 创建用于执行 SQL 的 Statement、PreparedStatement 和 CallableStatement 对象。
  • setAutoCommit(boolean autoCommit), commit(), rollback(): 管理事务。
  • close(): 关闭连接。

3. Statement

用途: Statement 接口用于执行静态 SQL 语句并返回它所生成的结果。
关键方法:

  • executeQuery(String sql): 执行返回单个 ResultSet 对象的 SQL 语句(如 SELECT)。
  • executeUpdate(String sql): 执行 SQL DML(数据操作语言)语句,如 INSERT、UPDATE 或 DELETE。
    close(): 关闭 Statement 对象。

4. PreparedStatement

用途: PreparedStatement 接口扩展了 Statement 接口,允许使用预编译的 SQL 语句。这提高了性能并提供了一种防止 SQL 注入的方法。
关键方法:

  • setInt(int parameterIndex, int value), setString(int parameterIndex, String value), 等: 设置参数值。
  • executeQuery(), executeUpdate(): 执行 SQL 语句。

5. CallableStatement

用途: CallableStatement 接口用于执行数据库存储过程。
关键方法:

  • registerOutParameter(int parameterIndex, int sqlType): 注册输出参数。
  • setInt(int parameterIndex, int value), setString(int parameterIndex, String value), 等: 设置输入参数。
  • execute(): 执行存储过程。

6. ResultSet

用途: ResultSet 接口表示数据库查询结果。它用于读取和遍历数据。
关键方法:

  • next(): 移动到结果集的下一行。
  • getInt(String columnLabel), getString(String columnLabel), 等: 获取当前行的列值。
  • close(): 关闭结果集。

7. DataSource

用途: DataSource 接口是一个替代 DriverManager 的方式,用于建立数据库连接。它通常与连接池一起使用。
关键方法:

  • getConnection(): 获取数据库连接。

这些接口组成了 JDBC 的核心,通过它们可以实现 Java 应用程序与多种数据库之间的交互。使用 JDBC,开发者可以编写独立于底层数据库的代码,从而提高应用程序的可移植性。

执行一个事务的流程

DataSource ds = // 获取 DataSource
Connection conn = null;
PreparedStatement pstmt = null;

try {
    conn = ds.getConnection();
    conn.setAutoCommit(false);

    String sql = "INSERT INTO your_table (column1, column2) VALUES (?, ?)";
    pstmt = conn.prepareStatement(sql);

    // 设置参数
    pstmt.setString(1, "value1");
    pstmt.setInt(2, 123);

    // 执行更新
    pstmt.executeUpdate();

    // 可以添加更多的 SQL 操作

    conn.commit(); // 提交事务
} catch (SQLException e) {
    if (conn != null) {
        try {
            conn.rollback(); // 回滚事务
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    e.printStackTrace();
} finally {
    // 关闭资源
    if (pstmt != null) pstmt.close();
    if (conn != null) conn.close();
}

DataSource通常是我们使用的连接池,比如Springboot默认使用的HikariCP连接池:

HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/yourdb");
ds.setUsername("username");
ds.setPassword("password");
// 其他配置...

相关文章

网友评论

      本文标题:JDBC接口

      本文链接:https://www.haomeiwen.com/subject/unrbodtx.html