008、JDBC处理SQL事务管理

事务简介

1. 事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。
2. 操作:
    (1). 开启事务
    (2). 提交事务
    (3). 回滚事务

一、JDBC关于事务操作的API

使用Connection对象来管理事务

相关API介绍
Connection接口中与事务有关的方法
 
说明
 
void setAutoCommit(boolean autoCommit)
 
参数是true或false
如果设置为false,表示关闭自动提交,相当于开启事务
 
void commit()
 
提交事务
 
void rollback()
 
回滚事务

二、开发步骤
1)获取连接
2)  开启事务
3)  获取到PreparedStatement
4)  使用PreparedStatement执行两次更新操作
5)  正常情况下提交事务
6)  出现异常回滚事务
7)  最后关闭资源

三、示例

使用前面的数据库工具类进行案例演示

import com.net.lwgk.util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Demo09JDBC {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pst1 = null;
        PreparedStatement pst2 = null;
        try {
            //获取连接
            conn = JDBCUtils.getConnection();
            //开启事务
            conn.setAutoCommit(false);
            //定义sql
            String sql1 = "update account set balance = balance + ? where id = 1";
            String sql2 = "update account set balance = balance - ? where id = 2";
            //获取执行sql对象
            pst1 = conn.prepareStatement(sql1);
            pst1.setDouble(1,500);
            pst2 = conn.prepareStatement(sql2);
            pst2.setDouble(1,500);
            pst1.executeUpdate();
            pst2.executeUpdate();

            conn.commit();
        } catch (Exception e) {//为了所有异常都执行,所以将异常设置为最高级
            if (conn != null){
                try {
                    conn.rollback();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }

            e.printStackTrace();
        }finally {
            JDBCUtils.close(pst1,conn);
            JDBCUtils.close(pst2,null);
        }

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值