MySQL之JDDBC事务操作
2022/4/24 19:13:17
本文主要是介绍MySQL之JDDBC事务操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JDBC事务的处理
目录- JDBC事务的处理
- 1、API
- 2、JDBC操作流程
- 3、案例-转账案例
- 1.需求
- 2.分析
- 3.实现
- 4.总结
之前我们是使用MySQL的命令来操作事务。接下来我们使用JDBC来操作事务. 先来学习下相关的API
1、API
Connection中与事务有关的方法 | 说明 |
---|---|
setAutoCommit(boolean autoCommit) | 参数是true或false 如果设置为false,表示关闭自动提交,相当于开启事务; 类似sql里面的 start transaction; |
void commit() | 提交事务; 类似sql里面的 commit; |
void rollback() | 回滚事务; 类似sql里面的 rollback; |
2、JDBC操作流程
try{ connection.setAutoCommit(false); //开启事务 ...操作数据库 connection.commit(); //提交事务 }catch(Exection e){ connection.rollback(); //回滚事务 }finally{ ...释放资源 }
3、案例-转账案例
- 案例的准备工作
create table account( id int primary key auto_increment, name varchar(20), money double ); insert into account values (null,'zs',1000); insert into account values (null,'ls',1000); insert into account values (null,'ww',1000);
1.需求
zs给ls转100, 使用事务进行控制
2.分析
1、获取得到连接;
2、开始事务;JDBC中是设置autocommit来进行操作的;
3、执行转换操作;
4、转账操作执行成功进行提交事务;转账操作失败则回滚事务;
3.实现
- 代码实现
package com.guang.jdbc; import com.guang.utils.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; /** * @Description: * @Author: lg */ public class TransferClient { public static void main(String[] args) throws Exception { Connection connection = null; PreparedStatement preparedStatement01 = null; PreparedStatement preparedStatement02 = null; try { //1.获得连接 connection = JdbcUtils.getConnection(); //*******开启事务********* connection.setAutoCommit(false); //2.创建预编译sql语句对象(2个) String sql01 = "update account set money = money-? where name = ?"; preparedStatement01 = connection.prepareStatement(sql01); String sql02 = "update account set money = money+? where name = ?"; preparedStatement02 = connection.prepareStatement(sql02); //3.设置参数, 执行(zs-100,ls+100) preparedStatement01.setDouble(1,100); preparedStatement01.setString(2,"zs"); preparedStatement01.executeUpdate(); int i = 1/0; //模拟出问题 preparedStatement02.setDouble(1,100); preparedStatement02.setString(2,"ls"); preparedStatement02.executeUpdate(); //*******提交事务********* connection.commit(); } catch (Exception e) { e.printStackTrace(); //*******回滚事务********* connection.rollback(); } finally { //4.释放资源 preparedStatement02.close(); JdbcUtils.closeAll(null,preparedStatement01,connection); } } }
4.总结
- 涉及到两个写的操作,我们一般通过手动事务去控制
- JDBC操作事务API
connection.setAutoCommit(fasle); //开启事务 connection.commit(); //提交事务 connection.rollback(); //回滚事务
这篇关于MySQL之JDDBC事务操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南