一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現的mysql事務處理操作示例

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

2021-05-29 11:37u013063153 Java教程

這篇文章主要介紹了Java實現的mysql事務處理操作,結合實例形式較為詳細的分析了Java基于JDBC操作mysql數據庫實現事務處理的相關概念、操作技巧與注意事項,需要的朋友可以參考下

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

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

2、事物的四大特點:

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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語句中去掉一個占位符:

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

運行結果:

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

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

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

原文鏈接:https://blog.csdn.net/u013063153/article/details/53671884

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品一区 | 国产精品亚洲午夜一区二区三区 | 齐天大性之七仙女欲春迅雷链接 | 精品欧美日韩一区二区三区 | 沉沦艳妇杨幂肉体小说 | 欧美特黄特色aaa大片免费看 | 毛片应用 | 恩爱夫妇交换小说 | 五月丁开婷婷 | 婷婷去我也去 | 91极品女神久色在线播放 | 亚洲可乐操 | 男人与雌性宠物交啪啪小说 | videos变态极端 | 亚洲高清免费在线观看 | 九九热在线观看视频 | japanesemoms乱熟| 午夜福利试看120秒体验区 | 动漫美女被褥吸奶漫画漫画 | 日本乱人伦中文在线播放 | 五月天色网站 | 成年人免费观看的视频 | 国产精品理论片在线观看 | 色亚州 | 4438全国最大成人网视频 | 日韩毛片网 | 动漫美女人物被黄漫小说 | 亚洲无线一二三四区 | 亚洲精美视频 | 百合女女师生play黄肉黄 | 久久观看视频 | 91精品婷婷国产综合久久8 | 99人中文字幕亚洲区 | 国内自拍成人网在线视频 | 午夜大片在线观看 | 国产亚洲高清国产拍精品 | 久久精品视频免费 | 99热这里只有精品一区二区三区 | 免费看欧美一级特黄a大片一 | 性欧美高清强烈性视频 | 日本在线视频免费观看 |