您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
18_JDBC管理事务_实现(事务的使用demo)
发布时间:2022-07-18 22:54:31编辑:雪饮阅读()
事务就是经常用在转账等多项操作,要么成功,要么失败,不能一部分成功,一部分失败。
那么php中我们事务操作常见的就是只要有任何错误,则所有操作立马回滚。
Java中我们这样实现。
JdbcTest.java:
package day5;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class JdbcTest {
public static void main(String[] args) {
Connection conn=null;
Statement stmt=null;
PreparedStatement pstmt1=null;
PreparedStatement pstmt2=null;
try{
conn= JDBCUtil.getConnection();
//关闭自动提交,即为手动提交,就可以灵活的根据业务需求来操作事务了
conn.setAutoCommit(false);
//操作1
pstmt1=conn.prepareStatement("update user set balance=balance-10 where user = ?");
pstmt1.setString(1,"kasumi");
pstmt1.executeUpdate();
//操作2
pstmt2=conn.prepareStatement("update user set balance=balance+10 where user = ?");
pstmt2.setString(1,"xy");
pstmt2.executeUpdate();
//事务提交
conn.commit();
}
catch(Exception e){
e.getStackTrace();
//如果连接为null,则说明都还没有连接上呢,则更别提事务了,也就没有必要回滚了,就算是一种极端情况是连接断开,
// 那么连接断开了由于事务是手动的,则本来就没有提交(前提是连接断开是在手动提交的开关执行完成之后即"conn.setAutoCommit(false)"成功之后)
if(conn!=null){
try{
conn.rollback();
}
catch(Exception e2){
e2.printStackTrace();
}
}
}
finally {
JDBCUtil.close(pstmt1,conn);
JDBCUtil.close(pstmt2,conn);
}
}
}
关键字词:jdbc,事务,demo
相关文章
- 16_JDBC各个类详解_PreparedStatement(sql注入复现及解
- 15_JDBC练习_登录案例(接收键盘输入)
- 14_JDBC工具类(从配置文件中加载数据库配置)
- 13_JDBC练习_select语句(通过实体类用泛型封装到集合)
- 11_JDBC各个类详解_ResultSet_基本使用
- 08_JDBC练习_insert语句
- 05_JDBC各个类详解_DriverManager_获取数据库连接
- 04_JDBC各个类详解_DriverManager_注册驱动(mysql连接
- 03_JDBC_快速入门(连接mysql并执行一个update的sql语
- GatewayWorker-Linux系统快速开始(从一个精简的聊天dem