oracle中事务处理

来源:互联网 发布:a星算法的缺点 编辑:程序博客网 时间:2024/06/11 17:42
oracle中事务处理(一)




事务:事务用于保证数据的一致性,它由一组相关的dml的语句组成,该组的dml
语句,要么全部成功,要么全部失败.(dml语句简单的说就是增加,修改,删除
;dml语句没有查询语句)


事务和锁:
当执行事务操作时(dml语句),oralce会在被作用的表上加锁,防止其它用户改
表的结果,这里对我们用户来讲是非常重要的!


提交事务:
1)使用commit语句可以提交事务


2)当执行commit语句后,会确认事务的变化,并且结束事务,删除保存点,释放锁,
其它会话将可以查看到事务变化后的新数据


下面简单介绍在java上使用oracle事务管理




例子:从scott的sal-100 同时smith的sal+100


package javastudy;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class Test2 {


public static void main(String[] args) {
///事务案例
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "lh621366");
            conn.setAutoCommit(false);///设置默认不自动提交
   Statement st = conn.createStatement();
///SCOTT的薪水 sal-100
   st.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
   ///SMITH的sal+100
   int i = 7/0;///这里是为了抛出异常,为了证明事务提交的一致性(要么全部成功,要么全部失败)
                    (抛出异常后,回滚点会回到conn=null这里,所以下面执行的代码也不会生效)

   st.executeUpdate("update emp set sal=sal+100 where ename='SMITH'");
   ///提交事务
   conn.commit();///将st更新的这两个sql语句和int i=7/0这个语句当做一个整体事务来处理
   st.close();
   conn.close();
} catch (Exception e) {
   

   try {
    ///如果发生异常,就回滚
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}

   
}


}







原创粉丝点击