java事务以及批量更新

java事务以及批量更新

1.概念简介
事务是一步或多部数据库操作序列组成的逻辑单元,这系列操作要么全部执行,要么全部放弃执行。

2.注意
一个事务可以由一组DML组成或者一个DDL语句或者一个DCL语句。DCL和DDL语句最多只能有一个,因为DDL和DCL语句会导致事务立即提交。
3.事务代码示例

Connection conn=DriverManager.getConnection(url,username,password);
Statement stmt=conn.createStatement();
try{
if(conn.getAutoCommit()){//确认事务是否是自动提交
conn.setAutoCommit(false);//关闭事务自动提交
}
stmt.executeUpdate(...);
stmt.executeUpdate(...);
stmt.executeUpdate(...);
conn.commit();

}catch{
conn.rollback();//失败回滚
}

4.事务还支持SavePointer配合回滚操作(详细在后面讨论)

5.JDBC批量更新(只支持DDL和DML操作)

5.1语法示例

Statement stmt =conn.createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
.......
stmt.executeBatch();//返回值是每个DDL或者DML语句执行后返回的int值组成的int数组。

从executeBatch()的返回值可以看出执行每个sql语句的方法是executeUpdate(),而不是execute()方法。

5.2批量更新配合事务使用
说明:
当批量操作有出错时回滚的要求,应该配合事务使用。
思路:

//保存当前自动提交模式
boolean autoCommit=conn.getAutoCommit();
//关闭自动提交
conn.setAutoCommit(false);
//使用statement收集多条sql语句;一次性执行
Statement stmt =conn.createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
.......
stmt.executeBatch();
//手动提交
conn.commit();
//恢复之前的事务提交模式
conn.setAutoCommit(autoCommit);

ps:代码是直接手敲的没运行,可能少个标点,多个字母什么的。另外有错的话请一定提出!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值