mysql中的事务处理:用dos窗口操作(注意engine myisam 不会使用事务) 事务就是一系列操所数据库中的语句,要么全部成功,要么全部失败 事务的特性:原子性,一致性,隔离型,持久性 start transaction; #开启事务 rollback;#回滚事务,如果在一系列操作中间出现异常,可以使用,返回到开启事务之前的状态 commit;#提交事务,当一系列操作全部成功,就要提交,就会永久保存
JDBC中控制事务 Connection conn;//表示连接对象 conn.setAutoCommit(false);//开启事务 conn.rollback();//回滚事务 conn.commit();//提交事务 还可以设置回滚点,回滚到回滚点 Savepoint sp=conn.setSavepoint(); conn.rollback(sp); conn.commit();
建表语句:
create table account( id int not null primary key, name varchar(30) not null, accNum varchar(40) not null unique, money decimal(10,2) not null default 0.00 ); insert into account values (1,'zhangsan','123',100000); insert into account values (2,'lisi','124',1000000);
具体实现代码:JdbcUtil.getConnection();获取连接对象
package com.itheima.test; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import com.ithiema.util.JdbcUtil; public class Demo1 { public static void main(String[] args) { Connection conn=JdbcUtil.getConnection(); String sql1="update account set money=money-10000 where accNum='124'"; String sql2="update account set money=money+10000 where accNum='123'"; Statement stmt=null; try { conn.setAutoCommit(false); stmt=conn.createStatement(); stmt.executeUpdate(sql1); int i=1/0; stmt.executeUpdate(sql2); conn.commit(); } catch (SQLException e) { try { conn.rollback(); conn.commit(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); } } }