黑馬day11 事務入門案例

來源:互聯網
上載者:User

標籤:事務

事務:事務是邏輯上的一組操作,這組操作要麼同時執行要麼同時不完成

事務的管理:預設情況下,資料庫會自動管理事務,管理的方式是一條語句就獨佔一個事務。

                       如果需要自己控制事務也可以通過如下命令開啟/提交/復原事務

start transaction

commit

rollback

jdbc的交易管理:

conn.setAutoCommit(false)//設定自己開啟事務

conn.commit()//提交事務

conn.rollback()//復原事務

SavePoint sp=con.setSavePoint()//設定復原點

conn.rollback(sp)//復原到指定的復原點

案例:

資料庫:

mysql> create table account(    -> id int primary key anto_increment,    -> name varchar(20),    -> money double);
查看資料庫:

mysql> select * from account;+----+------+-------+| id | name | money |+----+------+-------+|  1 | a    |   100 ||  2 | b    |   100 |+----+------+-------+
TransationDemo:

package cn.itheima.transation;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Savepoint;import cn.itheima.utils.JDBCUtils;public class TransationDemo1 {public static void main(String[] args) {Connection con=null;PreparedStatement ps=null;ResultSet rs=null;Savepoint save=null;try {con=JDBCUtils.getConnection();//資料庫預設的是一個sql語句是一個事務,即執行一個sql語句就自動認可了,我們需要更改資料庫的預設設定為falsecon.setAutoCommit(false);ps=con.prepareStatement("update  account set money=money-10 where name=?");ps.setString(1, "a");ps.executeUpdate();ps=con.prepareStatement("update account set money= money+10 where name=?");ps.setString(1, "b");ps.executeUpdate();//設定一個復原點,save=con.setSavepoint();ps=con.prepareStatement("update  account set money=money-10 where name=?");ps.setString(1, "a");ps.executeUpdate();ps=con.prepareStatement("update account set money= money+10 where name=?");ps.setString(1, "b");ps.executeUpdate();int i=1/0;//提交事務,從開啟一個事務到提交一個事務這是一個事務,這些sql語句就在一個事務中con.commit();} catch (Exception e) {e.printStackTrace();//如果拋出異常了,我也提交事務try {if(save==null){//說明沒有執行到復原點就拋出了異常con.rollback();}else{//不為null,就復原到設定的復原點con.rollback(save);con.commit();}} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}finally{JDBCUtils.closeResource(rs, ps, con);}}}
再查資料庫:

我們發現

mysql> select * from account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |    90 |
|  2 | b    |   110 |
+----+------+-------+




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

黑馬day11 事務入門案例

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.