javaweb中mysql数据库的回滚操作代码
2019獨角獸企業重金招聘Python工程師標準>>>
在mysql中創建用戶賬戶數據庫(注意,count不能為負數,要設置無符號型)
?
?
?
?
?
添加數據
?
?
?
?
下面我們得到connection對象開始進行事務提交和回滾的操作
package com.lyb.test;
import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.commons.dbutils.DbUtils;
import org.junit.Test;
import cn.itcast.jdbc.JdbcUtils;
public class MyTest {
?? ?@Test
?? ?public void test() {//回滾操作
?? ??? ?try {
?? ??? ??? ?Connection conn=JdbcUtils.getConnection();//得到鏈接
?? ??? ??? ?conn.setAutoCommit(false);//關閉事務自動提交
?? ??? ??? ?
?? ??? ??? ?String sql1="update bankuser set count=count-1000 where id=1";
?? ??? ??? ?String sql2="update bankuser set count=count+1000 where id=2";
?? ??? ??? ?
?? ??? ??? ?try {
?? ??? ??? ??? ?
?? ??? ??? ??? ?PreparedStatement ps2=conn.prepareStatement(sql2);
?? ??? ??? ??? ?ps2.executeUpdate();//增加id為2的user的余額
?? ??? ??? ??? ?PreparedStatement ps1=conn.prepareStatement(sql1);
?? ??? ??? ??? ?ps1.executeUpdate();//扣除id為1的user的余額//如果id為1的user的余額為0,繼續扣除發生異常,進入catch代碼塊進行回滾
?????????????????conn.commit();//沒有異常發生,事務提交
?? ??? ??? ?} catch (Exception e) {
?? ??? ??? ??? ?conn.rollback();//捕獲到異常就回滾
?? ??? ??? ??? ?System.out.println("出現異常,但是已經進行回滾,你可以放心轉賬了");
?? ??? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ??? ?//e.printStackTrace();
?? ??? ??? ?}finally{
?? ??? ??? ??? ?DbUtils.close(conn);//關閉連接
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}
}
?
轉載于:https://my.oschina.net/kaiyuanlong/blog/1094029
總結
以上是生活随笔為你收集整理的javaweb中mysql数据库的回滚操作代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka的配置文件详细描述
- 下一篇: docker集群运行在calico网络上