黑马day11 事务入门案例

事务:事务是逻辑上的一组操作,这组操作要么同时执行要么同时不完成

事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务。

如果需要自己控制事务也可以通过如下命令开启/提交/回滚事务

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 事务入门案例

相关文章:

你感兴趣的文章:

标签云: