JDBC之事务处理
2016-07-23 14:16
253 查看
今天我们讲讲JDBC的事务处理。事务处理在数据库开发中很重要,它的所有操作要么一起成功,要么一起失败。比如A给B银行卡转账100元,那么A卡中减少100元与B卡中多出100元必须一起成功或者一起失败。
事务具有原子性、一致性、独立性、持久性。
今天我们通过银行转账的案例来说明JDBC的事务处理过程。
首先我们建一个db_bank数据库。在其中创建表t_account:
下面我们来处理张三向李四转账这个事务:
通过异常回滚,如果在转账中发生意外,能够会滚到事务发生的初始状态。
事务具有原子性、一致性、独立性、持久性。
今天我们通过银行转账的案例来说明JDBC的事务处理过程。
首先我们建一个db_bank数据库。在其中创建表t_account:
create table `t_account` ( `id` int (11), `accountname` varchar (60), `accountBalance` int (11) ); insert into `t_account` (`id`, `accountname`, `accountBalance`) values('1','张三','1000'); insert into `t_account` (`id`, `accountname`, `accountBalance`) values('2','李四','1000');
下面我们来处理张三向李四转账这个事务:
public class Demo { private static DbUtil dbUtil = new DbUtil(); // 转出 private static void outCount(Connection con, String accountName, int account) throws Exception { String sql = "update t_account set accountBalance=accountBalance-? where accountName=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, account); pstmt.setString(2, accountName); pstmt.executeUpdate(); } // 转入 private static void inCount(Connection con, String accountName, int account) throws Exception { String sql = "update t_account set accountBalance=accountBalance+? where accountName=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, account); pstmt.setString(2, accountName); pstmt.executeUpdate(); } public static void main(String[] args) { Connection con = null; try { con = dbUtil.getCon(); con.setAutoCommit(false);// 取消自动提交 System.out.println("张三开始向李四转账!"); int account = 500; outCount(con, "张三", account); inCount(con, "李四", account); System.out.println("转账成功!"); } catch (Exception e) { try { con.rollback();// 回滚 } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } finally { try { con.commit(); con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
通过异常回滚,如果在转账中发生意外,能够会滚到事务发生的初始状态。
相关文章推荐
- jdbc中的Statement和PreparedStatement接口对象
- JDBC 数据库常用连接 链接字符串
- JDBC连接Access数据库的几种方式介绍
- 基于JDBC封装的BaseDao(实例代码)
- JDBC程序更新数据库中记录的方法
- jdbc链接远程数据库进行修改url操作
- JDBC 程序的常见错误及调试方法
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- Java中使用JDBC操作数据库简单实例
- Java加载JDBC驱动程序实例详解
- JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法
- JSP基于JDBC的数据库连接类实例
- JSP中使用JDBC访问SQL Server 2008数据库示例
- jsp+jdbc实现连接数据库的方法
- 解析jdbc处理oracle的clob字段的详解
- JDBC数据库的使用操作总结
- jdbc操作mysql数据库实例
- JSP使用JDBC连接MYSQL数据库的方法
- Java开发Oracle数据库连接JDBC Thin Driver 的三种方法
- java使用jdbc操作数据库示例分享