mysql事务的四大特性与简单运用
2015-04-04 20:34
609 查看
package mysql; import java.sql.Connection; import java.sql.SQLException; import java.sql.Savepoint; import java.sql.Statement; import org.junit.Test; //事物特性ACID //原子性,指事务中的操作要么都发生,要么都不发生 //一致性。指事务前后数据的完整性必须保持一致(甲乙2人总额2000元,甲转账乙100元后,转账后总额还是2000元) //隔离性。多个事务并发访问数据库的时候,一个事务间的操作不能干扰其他事务,要相互隔离 //持久性:指事务一旦提交(commit),对数据库的改变是持久的,即使数据库故障也不应对数据有影响 //数据库的隔离级别Seraializable(串行化,最高级别,能处理各种问题,但数据库效率低下),repeated read,read commit,read uncommit /* create table account ( id int primary key auto_increment, name varchar(20), price int ); /* * 事务,要么执行,要不执行 * start transaction update account set price=price-100 where name='a'; update account set price=price+100 where name='b'; * sql2语句 * commit(一定要执行commit才生效,不然回滚) */ public class 事务 { @Test public void test1() throws SQLException { Statement s=null; Connection con=DBHelper.getConnection(); try{ con.setAutoCommit(false);//不能一条一条执行sql String sql1="update account set price=price-100 where name='a'"; String sql2="update account set price=price+100 where name='b'"; s=con.createStatement(); s.executeUpdate(sql1); int i=8/0; //这边有错,程序自动回滚 s=con.createStatement(); s.executeUpdate(sql2); con.commit(); System.out.println("success...."); } catch (Exception e) { con.rollback();//自动回滚 } } @Test public void test2() throws SQLException //手动回滚事务,假如第二条sql执行错误,程序回滚,让第一条sql正常插入数据库 { Statement s=null; Connection con=DBHelper.getConnection(); Savepoint p=null; try{ con.setAutoCommit(false);//不能一条一条执行sql String sql1="update account set price=price-100 where name='a'"; String sql2="update account set price=price+100 where name='b'"; String sql3="update account set price=price+100 where name='c'"; s=con.createStatement(); s.executeUpdate(sql1); p=con.setSavepoint(); //保存点 int i=12/0; //这边出错了,上一条依然插入数据库 s=con.createStatement(); s.executeUpdate(sql2); s=con.createStatement(); s.executeUpdate(sql3); con.commit(); System.out.println("success...."); } catch (Exception e) { con.rollback(p); //回滚到第一个,第一个要执行 con.commit(); //手动回滚一定要提交 } } }
相关文章推荐
- Mysql事务详解(一)事务的概念,四大特性,使用和回滚
- Oracle、Mysql之事务及四大特性
- MySQL之事务的四大特性
- MySQL之事务的四大特性
- MySQL的事务的四大特性和隔离级别
- MySQL之事务的四大特性
- MySql--数据库事务四大特性以及隔离级别
- mysql进阶(二十三)数据库事务四大特性
- 数据库事务四大特性及事务隔离级别在mysql中的具体体现
- MySQL之事务的四大特性
- mysql进阶(二十三)数据库事务四大特性
- 2、面向对象以及winform的简单运用(面向对象的四大基本特性)
- mysql事务四大特性
- 数据库事务的四大特性是什么?
- 2013.10.13 事务特性、MYSQL 触发器、存储过程、函数
- 数据库事务四大特性
- 利用mysql事务特性实现并发安全的自增ID示例
- 利用mysql事务特性实现并发安全的自增ID示例
- mysql 常用引擎MyISAM和innodb的几点简单特性
- 事务+事务的四大特性+隔离性的具体分析+数据库连接池