五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

Mysql事務(wù)操作失敗如何解決

發(fā)布日期:2022-04-07 11:22 | 文章來源:CSDN

Mysql事務(wù)操作失敗如何解決

事務(wù)的原子性 :事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中包含的各操作要么都做,要么都不做 。

要實(shí)現(xiàn)事務(wù)的原子性,單單靠一條commit或是rollback命令還是不行的,因?yàn)槔鏲ommit命令它只是將一個(gè)事務(wù)中執(zhí)行成功的DML語句提交給數(shù)據(jù)庫(kù)里。如果要實(shí)現(xiàn)事務(wù)的原子性,則就需要commit和rollback命令配合上程序上的一個(gè)業(yè)務(wù)邏輯才能可以,具體業(yè)務(wù)邏輯代碼如下示例代碼:

1.現(xiàn)象

程序中打開了事務(wù)進(jìn)行插入,但是沒有commit,表中的數(shù)據(jù)已經(jīng)存在,就是回滾也不能刪除插入的數(shù)據(jù)

2.原因

本表的Storage Engine 為myisam,不是innoDB,不支持事務(wù)處理 rollback()

3.解決方法

使用 alter table xxxx engine = innoDB ; 將表改為 InnoDB 引擎,結(jié)果回滾正常。

4.代碼

 private void testCrud() {
     Connection conn = null;      //連接對(duì)象
     PreparedStatement pstmt = null;  //預(yù)編譯的SQL語句對(duì)象
      try{
        //加載MySQL驅(qū)動(dòng)程序
        Class.forName("com.mysql.jdbc.Driver");
        //連接字符串
        String url = "jdbc:mysql://localhost:3306/test";
        //建立數(shù)據(jù)庫(kù)連接
        conn = DriverManager.getConnection(url,"root","");
        //設(shè)置事務(wù)的隔離級(jí)別
        // conn.setTransactionIsolation(Connection. TRANSACTION_REPEATABLE_READ);
        //設(shè)置自動(dòng)提交為false,開始事務(wù)
        conn.setAutoCommit(false);
        //帶參數(shù)的更新語句
        String sql = "INSERT INTO user_info (username ,password ,age )values(?,?,?)";
        //準(zhǔn)備語句
        pstmt = conn.prepareStatement(sql);
        //綁定參數(shù),執(zhí)行更新語句,將張三的賬戶金額減去1000元
        pstmt.setString(1, "zhangui");
        pstmt.setString(2, "1111");
        pstmt.setInt(3, 300);
        pstmt.execute();
        
        //綁定參數(shù),執(zhí)行更新語句,將李四的賬戶金額增加1000元
        // pstmt.setString(1, "zzzzzzzzzzzzzzzzz"); //綁定了非法參數(shù)
        //pstmt.setString(2, "1111111111");
        //pstmt.setInt(3, 500);
        //pstmt.execute(); //將拋出SQL異常
        //提交事務(wù)
        //conn.commit();
        System.out.println("事務(wù)已提交,轉(zhuǎn)賬成功!");
        //關(guān)閉語句、連接
        pstmt.close(); conn.close();
      }catch(Exception e){
        try{
          conn.rollback();  //回滾事務(wù)
          System.out.println("事務(wù)回滾成功,沒有任何記錄被更新!");
        }catch(Exception re){
          System.out.println("回滾事務(wù)失??!");
        }
        e.printStackTrace();
      }finally{
        if(pstmt!=null) try{pstmt.close();}catch(Exception ignore){}
        if(conn!=null) try{conn.close();}catch(Exception ignore){}
      }
    
  }

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

國(guó)外服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部