JDBC批量处理

Statement的execute()等方法一次只能执行一条SQL语句,如果同时有多条SQL语句要执行的话,可以使用addBatch()方法将要只系那个的SQL语句加入进来,然后执行executeBatch()方法,这样就在一次方法调用中执行了多条SQL语句,以提高执行效率。

为了保证这一批语句全部成功或者失败,应该把批处理放置在事务中进行:

try{

       conn.setAutoCommite(false);//把自动提交事务设置为false

       Statement  stmt=conn.createStatement();

       stmt.addBatch(“…”);//添加SQL语句

       stmt.addBatch(“…”);//添加SQL语句

       .  .  .

       Stmt.executeBatch();//执行批处理

       conn.commit();//提交事务

}catch(SQLException e){

       try{

              conn.rollback();//回滚事务

}catch(SQLExceptione1){

       e 1.printStackTrace();

}

e.printStackTrace();

}finally{

       Try{

              Conn.setAutoCommit(true);//把自动提交事务设置为true

}catch(SQLExceptione){

       e.printStackTrace();

}

//关闭资源

.  .  .

}

使用PreparedStatement也可以进行批处理:

try{

       //启动事务------把自动提交事务设置为false

       conn.setAutoCommit(false);

       pstmt=conn.preparedStatement(sql);

       pstmt.setXXX(1,…);//给占位符赋值

       .  .  .

       //把这些操作添加到批处理中

       pstmt.addBatch();

 

       pstmt.setXXX(1,…);//给占位符赋值

       .  .  .

       //把这些操作添加到批处理中

       Pstmt.addBatch();

 

       Pstmt.executeBatch();//执行批处理

       //提交事务

       Conn.commit();

}catch(SQLException e){

       //回滚事务-------把所有的操作都取消

       try{

              conn.rollback();

}catch(SQLExceptione1){

       e 1.printStackTrace();

}

e.printStackTrace();

}finally{

       //关闭事务-----把自动提交事务设置为true

       try{

              conn.setAutCommit(true);

}catch(SQLExceptione){

       e.printStrackTrace();

}

//关闭资源

.   .   .

}

批处理中执行的语句只能是更新语句(insert、delete、update),否则会抛出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值