Java的jdbc使用addBatch进行批处理操作的几种方式

转自:http://www.360sdn.com/java/2014/0327/2822.html


SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种。

方式一、批量执行预定义模式的SQL

public static void exeBatch(Connection conn) { 
  try{ 
          String sql = "insert into t_example (code, name) values (?,?)";
          PreparedStatement pstmt = conn.prepareStatement(sql);
          pstmt.setString(1,"java2");
          pstmt.setString(2,"java");
          //添加一次预定义参数
          pstmt.addBatch();      
          pstmt.setString(1,"360sdn");
          pstmt.setString(2,"软件开发技术网");
          //再添加一次预定义参数
          pstmt.addBatch();      
          //批量执行预定义SQL
          pstmt.executeBatch();
    }catch(SQLException e) {
          e.printStackTrace();
    }finally{
          closeConnection(conn);
  }
 }

方式二、批量执行混合模式的SQL、有预定义的,还有静态的

//批量执行混合模式的SQL、有预定义的,还有静态的

public staticvoid exeBatchMixedSQL( Connection conn) { 
  PreparedStatement pstmt =null;
 try{
         String sql = "insert into t_example (code, name) values (?,?)";
         PreparedStatement pstmt = conn.prepareStatement(sql);
         pstmt.setString(1,"java");
         pstmt.setString(2,"360sdn");
 //添加一次预定义参数
         pstmt.addBatch();  
          pstmt.setString(1,"360sdn");
          pstmt.setString(2,"软件开发技术网");
//再添加一次预定义参数
         pstmt.addBatch();   
         //添加一次静态SQL
         pstmt.addBatch("update t_example set code= '360.com' where code='360sdn'");
         //批量执行预定义SQL
         pstmt.executeBatch();
 }catch(SQLException e) {
         e.printStackTrace();
 }finally{
         closeConnection(conn);
 }
}

方式三、执行批量静态的SQL

//执行批量静态的SQL
public static void exeBatchSQL(Connection conn) { 
  try{
          Statement stmt = conn.createStatement();
          //连续添加多条静态SQL
          stmt.addBatch("insert into t_example (code, name) values ('java', '360sdn.com')");
          stmt.addBatch("insert into t_example (code, name) values ('360', '360sdn')");
          stmt.addBatch("delete from t_example where code='java'");
          stmt.addBatch("update t_example set kind = '360data' where kind='360'");
//批量执行不支持Select语句
//          stmt.addBatch("select count(*) from t_example");  
          //执行批量执行
          stmt.executeBatch();
  }catch(SQLException e) {
          e.printStackTrace();
  }finally{
          closeConnection(conn);
  }
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值