1、事务的概念:
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性。
事务就是做事情的一个过程,简单来说,喝水【拧开杯子,喝水,盖上杯子】,
这个过程不可拆分。
这个概念被广泛应用到软件开发, 特别是数据库应用是最多的, 简单来说就是在执行多个更新SQL的时候,我们必须保证所有的SQL都成功才提交数据库的数据,否则回滚数据库数据,
步骤1:关闭数据库自动提交事务,在sql正常执行之后手动提交事务
步骤2:在异常处理的catch里面捕获异常,并且回滚事务
步奏3:打开数据库自动提交事务
public void zhuanzhang() {
int result = 0;
Connection conn = null;
// PreparedStatement pre = null;
Statement sta = null;
String sql1 = "update account set sal = sal + 100 where id = 1";
String sql2 = "update account set sal = sal - 100 where id = 2";
try {
conn = DBUtils.getConn();
conn.setAutoCommit(false); //关闭自动提交
sta = conn.createStatement();
//执行第一个sql
sta.executeUpdate(sql1);
int num = 9/0;
sta.executeUpdate(sql2);
conn.commit(); //手动提交事务
conn.setAutoCommit(true); //开启自动提交
} catch (Exception e) {
try {
conn.rollback(); //回滚事务
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} //回滚到远点
e.printStackTrace();
} finally {
DBUtils.closeDB(conn, sta, null);
}
}
所以对于数据库来说,事务实际上是指的我们我们对于关联操作的一个要门同时失败,要么同时成功的逻辑处理,