当前位置:网站首页>使用Connection对象连接管理事务
使用Connection对象连接管理事务
2022-08-09 13:25:00 【Camellia——】
package com.lin.jdbc_05;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.lin.jdbc_01.JDBCUtils;
/*
* 事物:将一个业务整体使用事物管理起来,要么同时成功,要么同时失败!(Transaction)
* 使用Java代码的管理事务
* Connection对象管理事物
*
* 成员方法:
* void setAutoCommit(boolean autoCommit):开启事物
* 参数为true:开启自动提交模式,为false,手动提交
void rollback():取消当前事物中的所有更改(回滚了)
void commit():使所有上一次提交/回滚后进行的更改成为持久更改
模拟:张三给李四转账500
* */
public class JdbcTest {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement stmt=null;
try {
// 注册驱动
// 获取连接对象
conn = JDBCUtils.getConnection();
// 开启手动提交
conn.setAutoCommit(false);
// 准备SQL
// 张三-500
String sql1 = "update account set balance = balance - ? where id = ? ;" ;
//将参数化的sql发送到数据库进行预编译,并同时获取预编译对象
stmt=conn.prepareStatement(sql1);
// 执行sql
stmt.setInt(1, 500);
stmt.setInt(2, 1);
// 执行sql
stmt.executeUpdate();
// 出现异常
// int num=1/0;
// 李四+500
String sql2 = "update account set balance = balance + ? where id = ?;" ;
stmt=conn.prepareStatement(sql2);
stmt.setInt(1, 500);
stmt.setInt(2, 2);
stmt.executeUpdate();
// 提交事物
conn.commit();
System.out.println("事物提交成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
// 执行catch语句,如果出问题,事物回滚
if(conn!=null) {
try {
System.out.println("回滚");
// 取消之前所有的更改
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}finally {
JDBCUtils.close( stmt, conn);
}
}
}

边栏推荐
猜你喜欢
随机推荐
PO、DO、TO、VO、DO、DTO、DAO、POJO都是什么?
openharmony容器组件之Counter
Code of Conduct for Firefighters
分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践 (转载非原创)
RobotFramework 之 RF变量与标准库关键字使用
Spark GC日志分析
响应式pbootcms模板仪表水表类网站
救火队员的行为准则
Jetpack Compose——Image使用Coli加载网络图片(包含GIF、SVG)
11.cuBLAS开发指南中文版--cuBLAS中的Level-1函数amax()和amin()
Es7.x使用RestHighLevelClient进行查询操作
响应式pbootcms模板家禽饲养类网站
RobotFramework 之 条件判断
Sql之各种Join
pytest 基础认知
vivo手机上的系统级消息推送平台的架构设计实践
从房产中介到程序员--80后张江男
openharmony容器组件之Flex
iptables防火墙
C语言中常用的数组排序方法:冒泡排序、选择排序、插入排序、数组的移动(含代码详解)以及相关联系题









