Oracle 事件

时间:2021-10-11 07:55:52

Oracle 的事物

事物是设么

事物是用于高正数据的一致性,他由一组相关的dml语句组成(增加删除语句),这组语句要么全部成功要不全部失败。

如:网上转账。

1)设置保存点

Savepoint a1 ;

2)取消部分事物

Rollback to a1 ;

3)取消全部事物

Rollback;

现在执行程序

Statement sm = conn.createStatement();

sm.executeUpdate("update emp set sal = sal - 100 where ename = 'SCOTT'");

sm.executeUpdate("update emp set sal = sal + 100 where ename = 'SMITH'") ;

这两句程序可以看出是一个事物,如果执行了前一个程序,扣钱,而没有执行第二个价钱的程序,则异常。

加一个事物处理

首先

Ct.setAutoCommit(false) ;  取消自动保存

然后在错误处理中,使用rollback。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class s {
private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:mldn";
private static final String USER = "scott" ;
private static final String PASSWORLD = "tiger" ;
public static void main(String[] args) throws ClassNotFoundException, SQLException {
int a ;
Connection conn = null;    
try{
Class.forName(DBDRIVER) ; //第二步 连接数据库
conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ; conn.setAutoCommit(false) ; System.out.println(conn) ;
Statement sm = conn.createStatement();
sm.executeUpdate("update emp set sal = sal - 100 where ename = 'SCOTT'");
a = / ;
sm.executeUpdate("update emp set sal = sal + 100 where ename = 'SMITH'") ; conn.commit();
conn.close();
} catch (Exception e) {
try{
conn.rollback() ; } catch (Exception e1){
e1.printStackTrace() ;
}
e.printStackTrace() ;
} } }

只读事务

Set transaction read only ;