最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年07月12日 14:14:37   作者:sinkingboat  
這篇文章主要介紹了Mysql事務(wù)操作失敗如何解決的相關(guān)資料,需要的朋友可以參考下

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

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

要實(shí)現(xiàn)事務(wù)的原子性,單單靠一條commit或是rollback命令還是不行的,因?yàn)槔鏲ommit命令它只是將一個(gè)事務(wù)中執(zhí)行成功的DML語句提交給數(shù)據(jù)庫里。如果要實(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ù)庫連接
        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ān)文章

  • mysql按照自定義(指定順序)排序的方法實(shí)例

    mysql按照自定義(指定順序)排序的方法實(shí)例

    在我們寫業(yè)務(wù)代碼的時(shí)候,會(huì)經(jīng)常碰見排序方式既不是正序也不是倒序,下面這篇文章主要給大家介紹了關(guān)于mysql按照自定義(指定順序)排序的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • mysql5.7使用變量進(jìn)行分組排名并實(shí)現(xiàn)篩選

    mysql5.7使用變量進(jìn)行分組排名并實(shí)現(xiàn)篩選

    這篇文章主要介紹了mysql5.7使用變量進(jìn)行分組排名并實(shí)現(xiàn)篩選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MySQL中的連接查詢(等值連接)

    MySQL中的連接查詢(等值連接)

    這篇文章主要介紹了MySQL中的連接查詢(等值連接),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MYSQL中查詢LONGBLOB類型數(shù)據(jù)的大小的詳細(xì)示例

    MYSQL中查詢LONGBLOB類型數(shù)據(jù)的大小的詳細(xì)示例

    在MySQL中,LONGBLOB?是一種二進(jìn)制大對(duì)象(BLOB)數(shù)據(jù)類型,用于存儲(chǔ)大量的二進(jìn)制數(shù)據(jù),但是,LONGBLOB?數(shù)據(jù)類型本身并不直接存儲(chǔ)數(shù)據(jù)的大?。ㄩL度),它存儲(chǔ)的是二進(jìn)制數(shù)據(jù)的實(shí)際內(nèi)容,這篇文章主要介紹了MYSQL中怎么查詢LONGBLOB類型數(shù)據(jù)的大小,需要的朋友可以參考下
    2024-06-06
  • MySQL刪除表數(shù)據(jù)與MySQL清空表命令的3種方法淺析

    MySQL刪除表數(shù)據(jù)與MySQL清空表命令的3種方法淺析

    刪除現(xiàn)有MySQL表非常容易,但是刪除任何現(xiàn)有的表時(shí)要非常小心,因?yàn)閯h除表后丟失的數(shù)據(jù)將無法恢復(fù),下面這篇文章主要給大家介紹了關(guān)于MySQL刪除表數(shù)據(jù)與MySQL清空表命令的3種方法的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySQL5.6.31 winx64.zip 安裝配置教程詳解

    MySQL5.6.31 winx64.zip 安裝配置教程詳解

    這篇文章主要介紹了MySQL5.6.31 winx64.zip 安裝配置教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Mysql讀寫分離過期常用解決方案

    Mysql讀寫分離過期常用解決方案

    這篇文章主要介紹了Mysql讀寫分離過期常用解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Windows?本地安裝?Mysql8.0圖文教程

    Windows?本地安裝?Mysql8.0圖文教程

    本文介紹了如何在Windows本地安裝Mysql8.0。從下載Mysql8.0安裝包,運(yùn)行安裝程序,配置初始設(shè)置到啟動(dòng)Mysql服務(wù)等詳細(xì)步驟進(jìn)行了講解。
    2023-04-04
  • MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用技巧總結(jié)

    MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用技巧總結(jié)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用方法,結(jié)合實(shí)例形式總結(jié)分析了MySQL表的優(yōu)化、索引設(shè)置、SQL優(yōu)化等相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2016-07-07
  • mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解

    mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解

    這篇文章主要介紹了mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10

最新評(píng)論

睢宁县| 常德市| 宣武区| 周口市| 汾西县| 康乐县| 京山县| 隆子县| 淳化县| 金秀| 太康县| 开平市| 寿阳县| 福建省| 伊川县| 曲水县| 永靖县| 桂东县| 宜城市| 名山县| 鄄城县| 沧州市| 孝义市| 乌兰县| 沙湾县| 吴忠市| 雷波县| 调兵山市| 江北区| 长垣县| 若羌县| 崇礼县| 平凉市| 海丰县| 衡南县| 富裕县| 合山市| 陈巴尔虎旗| 武平县| 乐东| 台前县|