麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Java實現的mysql事務處理操作示例

2024-07-14 08:42:12
字體:
來源:轉載
供稿:網友

本文實例講述了Java實現的mysql事務處理操作。分享給大家供大家參考,具體如下:

1、事務是一組要么同時執行成功,要么同時執行失敗的sql語句。是數據庫操作的一個執行單元。

2、事物的四大特點:

(1)atomicity(原子性)表示一個事務內的所有操作是一個整體,要么全部成功,要么全部失敗。

(2)consistency(一致性)表示一個事物內有一個操作失敗時,所有更改過的數據都必須回滾到修改前的狀態。

(3)isolation(隔離性)事務查看數據時數據所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的數據。

(4)durability(持久性)持久性事務完成之后,他對于系統的影響是永久性的。

3、實例(以sql語句中的insert語句為例)

package com.test.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 事務的基本用法 * */public class Test {  public static void main(String[] args) {    Connection conn = null;    PreparedStatement ps1 = null;    PreparedStatement ps2 = null;    try {      //加載驅動類      Class.forName("com.mysql.jdbc.Driver");      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");      conn.setAutoCommit(false); //JDBC中默認是true,自動提交事務      ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符      ps1.setObject(1, "張三");      ps1.setObject(2, "666666");      ps1.execute();      System.out.println("插入一個用戶張三");      try {        Thread.sleep(3000);      } catch (InterruptedException e) {        e.printStackTrace();      }      ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");      ps2.setObject(1, "李四");      ps2.setObject(2, "123456");      ps2.execute();      System.out.println("插入一個用戶李四");      conn.commit();//提交事務    } catch (ClassNotFoundException e) {      e.printStackTrace();      try {        conn.rollback();//某一條數據添加失敗時,回滾      } catch (SQLException e1) {        e1.printStackTrace();      }    } catch (SQLException e) {      e.printStackTrace();    }finally{      try {        if(ps1!=null){          ps1.close();        }      } catch (SQLException e) {        e.printStackTrace();      }      try {        if(conn!=null){          conn.close();        }      } catch (SQLException e) {        e.printStackTrace();      }    }  }}

這段代碼是正確的結果。運行結果:

插入一個用戶張三
(等待三秒后)
插入一個用戶李四

查看數據庫,插入了兩條數據。

接下來把數據庫中剛剛插入的兩條數據刪掉,然后把第二條sql語句改一下,讓他出錯,在第二條sql語句中去掉一個占位符:

ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?)");

運行結果:

插入一個用戶張三
(等待三秒后)
拋出錯誤了。。。。。。。。

然后查看一下數據庫,發現數據庫中兩條數據都沒能添加成功

希望本文所述對大家java程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品av久久久久久网址 | 91 在线免费观看 | 亚洲小视频在线观看,com | 欧美aⅴ视频| 在线观看中文字幕av | 最新中文字幕第一页视频 | 性爱在线免费视频 | 激情夜色| 337p日本欧洲亚洲大胆精蜜臀 | 一区二区三区在线观看免费 | 欧美日穴视频 | 中国成人在线视频 | 一区二区三区四区视频在线观看 | 国产精品一区二区三区在线播放 | 污片视频在线观看 | 国产自在线| 中文字幕www.| 久久久精品视频在线观看 | 久久久久久久亚洲精品 | 日本爽快片100色毛片视频 | 草操视频| 九九热九九热 | 草草视频在线播放 | 亚洲视频在线观看免费视频 | 911精品影院在线观看 | 噜噜噜躁狠狠躁狠狠精品视频 | 精品国产乱码久久久久久久久 | 欧美日韩亚洲另类 | 男人的天堂视频网站 | 香蕉秀| 久草在线资源福利站 | a视频在线免费观看 | 成人在线激情视频 | 久久影院免费观看 | 国产一区二区三区色淫影院 | 亚洲欧洲日韩av | 国产美女三级做爰 | 欧美成年人视频在线观看 | 7m视频成人精品分类 | 泰剧19禁啪啪无遮挡 | 欧美视频在线观看一区 |