JDBC事务管理
事务:一个事件的完成需要几个子操作的联合完成,只要有一个子操作执行失败,则数据回滚到原始状态,都成功则提交数据.
- 转账业务 - 
- 张三给李四转账1000元. 
- 注意:JDBC中的事务是自动提交的. 
- 问题:如果在业务的处理过程中,某条Sql语句执行失败,但是数据已经被更改了. 
- 解决:设置JDBC的事务为手动提交.sql语句都执行成功后再统一提交,只要有失败的就回滚. 
- 使用:conn.setAutoCommit(false)//设置为手动提交 
- 使用try catch进行SQL命令执行的异常处理 - 
- try中是使用conn.commit() 提交数据
- catch中使用conn.rollback()回滚数据
 
 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | public class TestTran {public static void main(String[] args) throws ClassNotFoundException, SQLException {
 
 Class.forName("oracle.jdbc.driver.OracleDriver");
 
 Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "scott","oracle");
 
 conn.setAutoCommit(false);
 
 Statement stmt=conn.createStatement();
 
 String sql1="update student set money=money-1000 where snum=6";
 String sql2="update student set money=money2+1000 where snum=7";
 
 try {
 int i1=stmt.executeUpdate(sql1);
 int i2=stmt.executeUpdate(sql2);
 System.out.println(i1+"----"+i2);
 conn.commit();
 } catch (Exception e) {
 conn.rollback();
 }
 
 stmt.close();
 conn.close();
 }
 }
 
 |