我是靠谱客的博主 儒雅大船,最近开发中收集的这篇文章主要介绍JDBC-MYSQL事务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JDBC-MYSQL事务

      • 概述
      • 开启事务
      • 提交事务
      • 回滚
        • 设置回滚点
        • 回滚到回滚点
      • 代码展示

前情提要:JDBC-MYSQL基础.

概述

一个事务可以有一至无数个SQL语句操作,当全部事务中的所有代码没有报错才添加到数据库服务器执行,当中途出现错误则回滚到事务开始之前,中间执行过的SQL语句全部撤回。

开启事务

mysql默认是不开启事务的,每执行一条sql语句就自动提交一次

connection.setAutoCommit(false);//开启事务

开启了事务只有手动提交事务才可完成sql语句操作

提交事务

提交此次事务的使用sql语句操作

connection.commit();

回滚

当程序或数据库出错时,将事务回滚到开启前

connection.rollback();

设置回滚点

Savepoint savepoint = connection.setSavepoint();

回滚到回滚点

回滚到回滚点需要添加事务,因为要提交事务开启到回滚点的sql语句操作

if(savepoint!=null){//判断是否在回滚点前发生了错误
connection.rollback(savepoint);
connection.commit();
}else {//未到回滚点则全部回滚
connection.rollback();
}

【注意】:所有的回滚代码都需要放在最大错误的catch代码中,因为需要捕捉到所有可能发生的错误,然后回滚事务

代码展示

/**
* @program: JDBC
* @description: TODO
* @author: 吐鲁番
* @Date: 2020/8/21
* @Time: 21:03
**/
public class transactionJDBC {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement prepar = null;
Savepoint savepoint = null;
ResultSet resultSet = null;
try {
connection = JDBCutils.getConnection();
connection.setAutoCommit(false);//开启事务
//执行sql操作
prepar = connection.prepareStatement("UPDATE a SET age=? WHERE id=?");
prepar.setString(1, "1");
prepar.setInt(2, 1);
prepar.executeUpdate();
savepoint = connection.setSavepoint();//设置回滚点
int i = 3 / 0;//发生错误
//执行sql操作
prepar = connection.prepareStatement("UPDATE a SET age=? WHERE id=?");
prepar.setString(1, "2");
prepar.setInt(2, 2);
prepar.executeUpdate();
connection.commit();//提交事务
} catch (Exception e) {
if (savepoint != null) {//判断是否在回滚点前发生了错误
try {
//回滚到设置点
connection.rollback(savepoint);
//提交事务
connection.commit();
} catch (SQLException e1) {
e1.printStackTrace();
}
} else {//未到回滚点则全部回滚
try {
connection.rollback();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
e.printStackTrace();
} finally {
JDBCutils.close(connection, prepar, resultSet);//关闭资源
}
}
}

最后

以上就是儒雅大船为你收集整理的JDBC-MYSQL事务的全部内容,希望文章能够帮你解决JDBC-MYSQL事务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部