事务管理

本文详细介绍了如何使用JDBC进行事务处理,包括开启事务、提交事务及回滚事务的具体步骤。通过一个账户转账的示例代码,展示了如何在Java中控制数据库的自动提交行为,实现数据的一致性和安全性。

JDBC事务的处理

事务的方法:(使用对象:Connection对象)
    开启事务:setAutoCommit(false)
                参数是 true 或 false 如果设置为 false,表示关闭自动提交,相当于开启事务
    提交事务:commit()
    回滚事务:rollback()
开发步骤: 
1) 获取连接 
2) 开启事务 
3) 获取到 PreparedStatement 
4) 使用 PreparedStatement 执行两次更新操作 
5) 正常情况下提交事务 
6) 出现异常回滚事务
7) 最后关闭资源 

账户案例代码:
在这里插入图片描述

package com.itheima;
import com.itheima.utils.JdbcUtils;
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.SQLException;

public class Demo12Transaction {
    //没有异常,提交事务,出现异常回滚事务     
	public static void main(String[] args) {
   		//1) 注册驱动        
		Connection connection = null;         
		PreparedStatement ps = null;        
		try {         
	    //2) 获取连接             
		connection = JdbcUtils.getConnection();         
	    //3) 开启事务            
		connection.setAutoCommit(false);         
		//4) 获取到PreparedStatement            
	    //从jack扣钱            
		ps = connection.prepareStatement("update account set balance = balance - ? where name=?");             
		ps.setInt(1, 500);            
		ps.setString(2,"Jack");             
		ps.executeUpdate();             
	  	//出现异常             
		//System.out.println(100 / 0);             
	    //给rose加钱             
		ps = connection.prepareStatement("update account set balance = balance + ? where name=?");             
		ps.setInt(1, 500);            
		ps.setString(2,"Rose");             
		ps.executeUpdate();             
	    //提交事务             
		connection.commit();             
		System.out.println("转账成功");        
		 } catch (Exception e) {             
		e.printStackTrace();             
		try {                 
	    //事务的回滚                 
		connection.rollback();             
		} catch (SQLException e1) {                    
		 e1.printStackTrace();             
		}             
		System.out.println("转账失败");         
		}finally {         
	    //7) 关闭资源             
		JdbcUtils.close(connection,ps);         
		}
	} 
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值