jdbc事务处理

yeyedeyatou 2014-08-25

在JDBC的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。我们通过提交commit()或是回退rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。

首先我们要注意,在JDBC中,事务操作默认是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作。操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回退。

其 次,在JDBC中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成 后调用commit()来进行整体提交。倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常。此时就可以在异常捕获时调用 rollback()进行回退。这样做可以保持多次更新操作后,相关数据的一致性。

示例代码如下:

try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;User=JavaDB;Password=javadb;DatabaseName=northwind);
//点禁止自动提交,设置回退
conn.setAutoCommit(false);
stmt = conn.createStatement();
//数据库更新操作1
stmt.executeUpdate(“update firsttable Set Name='testTransaction' Where ID = 1”);
//数据库更新操作2
stmt.executeUpdate(“insert into firsttable ID = 12,Name = 'testTransaction2'”);
//事务提交
conn.commit();
}
catch(Exception ex) {
ex.printStackTrace();
try {
//操作不成功则回退
conn.rollback();
}
catch(Exception e){
e.printStackTrace();
}
}

相关推荐