概述:
1.当一个逻辑执行单元执行一系列的操作时,要么全部执行,要么全部不执行。
不能出现执行一半的情况。例如:取款机吐钱要做的操作:修改卡数据-吐钱
但是 在修改卡数据的时候 取款机故障了~,卡里的钱是扣了 但是没有吐出RMB,这就出大麻烦了
所以修改卡数据和吐钱 要么全执行,要么全不执行,上面的那种情况,取款机需要回滚,将执行过的修改卡数据的操作回到原来的状态。
2.4个特性 ACID(原子性、一致性、隔离性和持久性)
3.jdbc中的事务,只要设置是否自动提交即可
关闭自动提交,开启事务
开启自动提交,关闭事务
package com.cxy.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author cxy
*/
public class TransactionTest
{
public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
try
(
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
Statement stmt=con.createStatement();
)
{
System.out.println("开启事务");
con.setAutoCommit(false); //关闭自动提交开启事务
stmt.executeUpdate("insert into t_student values ('sw1','事务1','男')");
stmt.executeUpdate("insert into t_student values ('sw2','事务2','女')");
con.rollback();
stmt.executeUpdate("insert into t_student values ('sw3','事务3','男')");
stmt.executeUpdate("insert into t_student values ('sw4','事务4','女')");
con.commit(); //如果你不提交那么本次操作不会对数据库造成任何
System.out.println("事务提交");
}catch(SQLException e)
{
System.out.println("数据库操作出现异常");
}
}
}
相关链接:
声明:
1.原创文章,转载请标明并加本文连接。
2.文章反映个人愚见,如有异议欢迎讨论指正