加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JDBC事务的简单使用

发布时间:2020-12-15 07:20:32 所属栏目:Java 来源:网络整理
导读:在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能。 事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的。 import java.sql.Connection; import java.sql.DriverManager; import java.sq

在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能。

事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBC_transactions {
    public static void main(String[] args) {
        //使用try-with-resources的方法自动关闭连接
        //首先还是先初始化驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        //连接数据库
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin");
             Statement statement = connection.createStatement();) {
            //执行一个事务
            //首先关闭自动提交
            connection.setAutoCommit(false);
            //执行两个更新语句,一个增加某个字段,一个减少某个字段
            String sql1="update hero set hp=hp-10 where id=1";
            String sql2="update hero set hp=hp+10 where id=1";
            statement.execute(sql1);
            statement.execute(sql2);
            //手动提交
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

这句话就是关闭自动提交。

connection.setAutoCommit(false);

一直到

connection.commit();

这两句话内的sql语句就是一个事务。如果我们故意制造个错误,比如故意写错sql语句的某个关键字,编译器会报错,并且正确的sql语句不会提交。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读