事务
转账
ACCID PASSWORD USERNAME OPENDATE BALANCE
----------- -------------------- -------------------- ----------- ------------
10086 123456 中国移动 2019/7/12 1 110100.00
10010 789000 中国财经 2019/7/18 1 20000.00
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@//localhost:1521/ORCL";
String user = "scott";
String password = "123";
Connection conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);// 自动提交方式设置为false
try {
String sql1 = "update account set balance=balance-10000 where accid=10010";
String sql2 = "update account set balance=balance+10000 where accid=10086";
PreparedStatement ps = conn.prepareStatement(sql1);
ps.executeUpdate();
ps = conn.prepareStatement(sql2);
ps.executeUpdate();
conn.commit();// 如果没有异常,直接提交
System.out.println("转账成功");
} catch (Exception e) {
e.printStackTrace();
conn.rollback();// 执行失败,回滚
System.out.println("转账失败");
} finally {
conn.close();
}
}
ACCID PASSWORD USERNAME OPENDATE BALANCE
----------- -------------------- -------------------- ----------- ------------
10086 123456 中国移动 2019/7/12 1 120100.00
10010 789000 中国财经 2019/7/18 1 10000.00
本文通过一个转账案例演示了如何使用Oracle数据库进行事务处理。具体步骤包括:加载Oracle驱动、建立连接并关闭自动提交功能,执行更新操作减少一方账户余额同时增加另一方账户余额,最后根据是否出现异常决定提交或回滚事务。

1175

被折叠的 条评论
为什么被折叠?



