美文网首页
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