jsp mysql事务锁,JSP操作数据库的事务回滚

基础介绍

1.先设置为手动提交

conn.setAutoCommit(false); //将自动提交设置为false

2.若成功则提交

conn.commit(); //当操作成功后手动提交

3.若失败则回滚

conn.rollback(); //一旦其中一个操作出错都将回滚,使两个操作都不成功

代码演示

注:由于各种写法,文件结构等都各不相同,此处仅供参考。

1.演示删除主表,外键,文件,同时成功,失败返回。

2.因为文件删除了,撤回很麻烦,所以选择最后删除文件,删除文件成功在提交。

3.注意别忘了异常时回滚,以及关闭数据库的调用。

Map rtmap = new HashMap();

try {

conn.setAutoCommit(false);  //将自动提交设置为false

sql = "delete from xxx where xiaozu_id=?";

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, xxx);

int ok = pstmt.executeUpdate();

if (ok > 0) {

sql = "delete from xxx where id=?";

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, xxx);

int insert_rs = pstmt.executeUpdate();

if (insert_rs > 0) {

//删除---文件

if (new File(fileName).delete()) {

rtmap.put("msg", "success");

conn.commit();      //当两个操作成功后手动提交

} else {

rtmap.put("msg", "删除文件失败");

conn.rollback();    //一旦其中一个操作出错都将回滚,使两个操作都不成功

}

} else {

rtmap.put("msg", "删除xx失败");

}

conn.commit();      //当两个操作成功后手动提交

} else {

rtmap.put("msg", "删除图片失败");

}

} catch (Exception ex) {

conn.rollback();    //一旦其中一个操作出错都将回滚,使两个操作都不成功

rtmap.put("msg", "java程序GG了!");

ex.printStackTrace();

} finally {

out.println(JSON.toJSON(rtmap));

if (rs != null) {

rs.close();

}

if (pstmt != null) {

pstmt.close();

}

if (conn != null) {

conn.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值