java手动提交事务和自动提交

Java手动提交事务需要使用Connection对象的commit()方法,而自动提交事务则不需要显式调用该方法。

Java手动提交事务

1、使用Connection对象的setAutoCommit()方法关闭自动提交功能

2、执行SQL语句

java手动提交事务和自动提交

3、使用Connection对象的commit()方法手动提交事务

4、使用Connection对象的rollback()方法回滚事务

示例代码:

java手动提交事务和自动提交

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ManualTransactionExample {
    public static void main(String[] args) {
        Connection connection = null;
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获取数据库连接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
            // 关闭自动提交功能
            connection.setAutoCommit(false);
            // 创建PreparedStatement对象
            PreparedStatement pstmt1 = connection.prepareStatement("UPDATE account SET balance = balance 100 WHERE id = 1");
            PreparedStatement pstmt2 = connection.prepareStatement("UPDATE account SET balance = balance + 100 WHERE id = 2");
            // 执行SQL语句
            pstmt1.executeUpdate();
            pstmt2.executeUpdate();
            // 手动提交事务
            connection.commit();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            try {
                // 发生异常,回滚事务
                connection.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Java自动提交事务

1、使用Connection对象的setAutoCommit()方法开启自动提交功能(默认为true)

2、执行SQL语句,事务会自动提交或回滚,取决于SQL语句是否成功执行

3、不需要手动调用commit()或rollback()方法,系统会自动处理事务的提交和回滚

java手动提交事务和自动提交

示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class AutoTransactionExample {
    public static void main(String[] args) {
        Connection connection = null;
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获取数据库连接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
            // 开启自动提交功能(默认为true)
            connection.setAutoCommit(true);
            // 创建PreparedStatement对象
            PreparedStatement pstmt1 = connection.prepareStatement("UPDATE account SET balance = balance 100 WHERE id = 1");
            PreparedStatement pstmt2 = connection.prepareStatement("UPDATE account SET balance = balance + 100 WHERE id = 2");
            // 执行SQL语句,事务会自动提交或回滚,取决于SQL语句是否成功执行
            pstmt1.executeUpdate();
            pstmt2.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/642672.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-05-21 15:48
下一篇 2024-05-21 15:49

相关推荐

  • 如何用Java处理和操作图片?

    Java 是一种广泛使用的编程语言,支持面向对象编程和跨平台运行。它常用于开发企业级应用、移动应用(如 Android)和服务器端程序。

    2024-11-27
    07
  • 如何实现Java文件下载功能?

    在Java中,可以使用java.net.URL和java.nio.file包来下载文件。首先创建一个URL对象指向要下载的文件,然后使用URLConnection打开连接,读取数据并写入到本地文件中。记得处理异常和关闭资源。

    2024-11-26
    013
  • 如何用Java上传MySQL数据库连接驱动并实现数据库连接?

    要连接MySQL数据库,首先需要上传MySQL JDBC驱动程序(mysql-connector-java.jar)到项目中。然后使用以下代码建立连接:,,“java,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.SQLException;,,public class Main {, public static void main(String[] args) {, String url = “jdbc:mysql://localhost:3306/yourDatabase”;, String user = “yourUsername”;, String password = “yourPassword”;,, try {, Class.forName(“com.mysql.cj.jdbc.Driver”);, Connection connection = DriverManager.getConnection(url, user, password);, System.out.println(“Connected to the database successfully!”);, } catch (ClassNotFoundException | SQLException e) {, e.printStackTrace();, }, },},“

    2024-11-25
    019
  • gc代表什么含义?

    gc即气相色谱(gas chromatography,简称gc),是二十世纪五十年代出现的一项重大科学技术成就。

    2024-11-25
    033

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入