JDBC事务保存点,即事部分回滚
2014-03-25 19:30
218 查看
转载/article/3972188.html
JDBC事务保存点,即事部分回滚
JDBCSQLJavaJDBC中的事务保存点,即事务发生回滚的时候,回滚到保存点那里去,事务开始到保存点之间的操作不用回滚.
事务(SavePoint)
l 当只想撤销事务中的部分操作时可使用SavePoint
l SavePoint sp = connection.setSavepoint();
l connection.rollerbak(sp); //回滚到那个事务点上去
l connection.commit();
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
publicclass SavePointTest {
publicstaticvoid
main(String[] args) throws SQLException {
test();
}
staticvoid test()
throws SQLException {
Connection conn =
null;
Statement st =
null;
ResultSet rs =
null;
Savepoint sp =
null;
try {
conn = JdbcUtils.getConnection();
conn.setAutoCommit(false);
st = conn.createStatement();
String sql =
"update user set money=money-10 where id=1";
st.executeUpdate(sql);
sp = conn.setSavepoint();
sql =
"update user set money=money-10 where id=3";
st.executeUpdate(sql);
sql =
"select money from user where id=2";
rs = st.executeQuery(sql);
float money = 0.0f;
if (rs.next()) {
money = rs.getFloat("money");
}
if (money > 300)
thrownew RuntimeException("已经超过最大值!");
sql =
"update user set money=money+10 where id=2";
st.executeUpdate(sql);
conn.commit();
} catch (RuntimeException e) {
if (conn !=
null && sp !=
null) {
conn.rollback(sp);//回滚到那个事务点上去
conn.commit();
}
throw e;
} catch (SQLException e) {
if (conn !=
null)
conn.rollback();
throw e;
} finally {
JdbcUtils.free(rs, st, conn);
}
}
}
相关文章推荐
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- JDBC 事务(二)回滚到保存点
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- MySQL事务部分回滚-回滚到指定保存点
- MySQL事务部分回滚-回滚到指定保存点
- JDBC 实现oracle事务的回滚
- spring事务失效解决方法并进行事务的部分回滚
- JDBC 事务的回滚 提交
- 关于设置事务回滚保存点的设置
- Spring练习:JDBC模板和事务回滚
- DEBUG:JDBC建立了事务,操作失败,却没能实现回滚的问题
- Spring Junit4 Test中JDBC事务回滚抛异常Connection is null
- JDBC以及相关技术学习(七)----事务机制与保存点
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
- sqlserver的事务回滚和设置事务保存点操作
- JDBC转账,使用事务, 回滚到指定的代码段
- mysql引擎与jdbc事务回滚
- 事务部分不回滚
- jdbc中的事务回滚管理
- JDBC对事务的使用(包括自动提交,回滚等知识)