zoukankan      html  css  js  c++  java
  • 关于dbutils中QueryRunner看批量删除语句batch

    //批量删除

    public void delBooks(String[] ids) throws SQLException {
    QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
    Object[][] params = new Object[ids.length][];//高维也就是行数确定执行sql语句的次数,低维也就是列数是给?赋值
    for (int i = 0; i < params.length; i++) {//循环行数,决定SQL语句执行的次数
    params[i] = new Object[]{ids[i]};//给低维也就是列数“?”赋值,每行只给一列赋值,决定每条SQL语句的参数个数
    }
    qr.batch("delete from books where id=?", params);
    }

    源码实现:

    public int[] batch(String sql, Object[][] params) throws SQLException {
    Connection conn = this.prepareConnection();
    
    return this.batch(conn, true, sql, params);
    }
    
    private int[] batch(Connection conn, boolean closeConn, String sql, Object[][] params) throws SQLException {
    if (conn == null) {
    throw new SQLException("Null connection");
    }
    
    if (sql == null) {
    if (closeConn) {
    close(conn);
    }
    throw new SQLException("Null SQL statement");
    }
    
    if (params == null) {
    if (closeConn) {
    close(conn);
    }
    throw new SQLException("Null parameters. If parameters aren't need, pass an empty array.");
    }
    
    PreparedStatement stmt = null;
    int[] rows = null;
    try {
    stmt = this.prepareStatement(conn, sql);
    
    for (int i = 0; i < params.length; i++) {
    this.fillStatement(stmt, params[i]);
    stmt.addBatch();
    }
    rows = stmt.executeBatch();
    
    } catch (SQLException e) {
    this.rethrow(e, sql, (Object[])params);
    } finally {
    close(stmt);
    if (closeConn) {
    close(conn);
    }
    }
    
    return rows;
    }

    解读: 因为params是一个二维数组, 所以往preparedStatement中赋值的时候使用了for循环, 然后通过preparedstatement.addBatch() 进行批量添加, 然后执行executeBatch()进行操作.

    本文转自:https://www.cnblogs.com/wang-meng/p/5525389.html

  • 相关阅读:
    关于数论的一些总结
    gym101431B
    4.29训练题解
    hdu4347
    5.13训练的一些题解
    5.20训练的一些题解
    hdu4796
    hdu5984
    bzoj1941 hdu5992
    hdu4307
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/7875707.html
Copyright © 2011-2022 走看看