国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql事務操作失敗如何解決

2024-07-24 12:51:28
字體:
來源:轉載
供稿:網友

Mysql事務操作失敗如何解決

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

要實現事務的原子性,單單靠一條commit或是rollback命令還是不行的,因為例如commit命令它只是將一個事務中執行成功的DML語句提交給數據庫里。如果要實現事務的原子性,則就需要commit和rollback命令配合上程序上的一個業務邏輯才能可以,具體業務邏輯代碼如下示例代碼:

1.現象

     程序中打開了事務進行插入,但是沒有commit,表中的數據已經存在,就是回滾也不能刪除插入的數據

2.原因

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

3.解決方法

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

4.代碼

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 焉耆| 随州市| 陵川县| 宜兰市| 长顺县| 呼伦贝尔市| 竹溪县| 嘉禾县| 古浪县| 萨嘎县| 北川| 延川县| 长岛县| 葫芦岛市| 定日县| 将乐县| 祁阳县| 大洼县| 黄陵县| 依兰县| 绍兴县| 滦南县| 敦化市| 勐海县| 环江| 宝坻区| 海淀区| 绥棱县| 金山区| 和平区| 北辰区| 个旧市| 平舆县| 平谷区| 弥渡县| 民丰县| 邯郸市| 乌鲁木齐县| 广丰县| 连江县| 安阳县|