更新时间:2026-07-28 GMT+08:00
分享

执行SQL语句

应用程序通过执行SQL语句来操作数据库。本章节通过示例介绍CREATE TABLE、INSERT、UPDATE、SELECT等操作。

执行普通SQL语句

前置条件:已连接数据库,连接对象为conn。

执行普通SQL语句,创建customer_t1表的步骤如下:

  1. 调用Connection接口的createStatement()方法创建语句对象stmt。

    1
    Statement stmt = conn.createStatement();
    

  2. 调用Statement接口的executeUpdate()方法执行SQL语句。

    1
    int rc = stmt.executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32))");
    

  3. 调用Statement接口的close()方法关闭语句对象stmt。

    1
    stmt.close();
    

执行批量插入处理语句

创建预处理语句后执行批量插入处理,数据库只创建一次执行计划,节省了语句的编译和优化时间。

前置条件:已通过执行普通SQL语句创建customer_t1表。

执行预处理语句,批量插入数据的步骤如下:

  1. 调用Connection接口的prepareStatement()方法创建预处理语句对象pst。

    1
    PreparedStatement pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)");
    

  2. 针对每条数据调用对应接口设置参数,以及调用addBatch()将SQL语句添加到批处理中。

    1
    2
    3
    4
    5
    for (int i = 0; i < 3; i++) {
       pst.setInt(1, i);
       pst.setString(2, "data " + i);
       pst.addBatch();
    }
    

  3. 调用PreparedStatement接口的executeBatch()方法执行批量插入处理。

    1
    pst.executeBatch();
    

  4. 调用PreparedStatement接口的close()方法关闭预处理语句对象pst。

    1
    pst.close();
    

在数据库批处理操作中,应遵循以下关键原则以确保性能:

  1. 持续执行原则
    • 批处理程序应当保持持续执行,避免中途终止。
    • 异常终止会显著影响数据库整体性能。
  2. 事务管理优化
    • 必须禁用自动提交功能。
      conn.setAutoCommit(false);
    • 采用分批提交策略而非单行提交。
    • 需要根据数据量和系统资源确定合适的批量大小。

执行预处理更新语句

预处理语句是只编译和优化一次,可以通过设置不同的参数值多次使用。由于已经预先编译好,后续使用会减少执行时间。因此,如果多次执行一条语句,请选择使用预处理语句。

前置条件:已通过执行批量插入处理语句向customer_t1表中插入数据。

执行预处理SQL语句对数据进行更新的步骤如下:

  1. 调用Connection接口的prepareStatement()方法创建预编译语句对象pstmt。

    1
    PreparedStatement pstmt = conn.prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1");
    

  2. 调用PreparedStatement接口的setString()方法设置参数。

    1
    pstmt.setString(1, "new Data");
    

  3. 调用PreparedStatement接口的executeUpdate()方法执行预处理SQL语句。

    1
    int rowcount = pstmt.executeUpdate();
    

  4. 调用PreparedStatement接口的close()方法关闭预处理语句对象pstmt。

    1
    pstmt.close();
    

prepareStatement设置绑定参数后,最终会构建成一个B报文或U报文,在下一步执行SQL语句时发给服务端。B报文或U报文有最大长度限制(不能超过1023MB),如果一次绑定数据过大,可能因报文过长导致异常。因此prepareStatement设置绑定参数时需要注意评估和控制绑定数据的大小,避免出现超出报文上限要求的现象。

执行查询语句

前置条件:已执行预处理更新语句

执行查询语句的步骤如下:

  1. 调用Connection接口的createStatement()方法创建语句对象stmts。

    1
    Statement stmts = conn.createStatement();
    

  2. 调用Statement接口的executeQuery()方法执行SQL查询语句,并返回ResultSet。

    1
    ResultSet rs = stmts.executeQuery("SELECT * FROM customer_t1");
    

相关文档