Java中利用JDBC控制事务

news/2024/5/19 1:46:30 标签: java, jdbc, 数据库, mysql, sql

JDBC控制事务:

  1. 事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。

    1. 操作:
      1. 开启事务
      2. 提交事务
      3. 回滚事务
    2. 使用Connection对象来管理事务
      • 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
        • 在执行sql之前开启事务
      • 提交事务:commit()
        • 当所有sql都执行完提交事务
      • 回滚事务:rollback()
        • 在catch中回滚事务

    代码:

java">public class JDBCDemo10 {

		    public static void main(String[] args) {
		        Connection conn = null;
		        PreparedStatement pstmt1 = null;
		        PreparedStatement pstmt2 = null;
		
		        try {
		            //1.获取连接
		            conn = JDBCUtils.getConnection();
		            //开启事务
		            conn.setAutoCommit(false);
		
		            //2.定义sql
		            //2.1 张三 - 500
		            String sql1 = "update account set balance = balance - ? where id = ?";
		            //2.2 李四 + 500
		            String sql2 = "update account set balance = balance + ? where id = ?";
		            //3.获取执行sql对象
		            pstmt1 = conn.prepareStatement(sql1);
		            pstmt2 = conn.prepareStatement(sql2);
		            //4. 设置参数
		            pstmt1.setDouble(1,500);
		            pstmt1.setInt(2,1);
		
		            pstmt2.setDouble(1,500);
		            pstmt2.setInt(2,2);
		            //5.执行sql
		            pstmt1.executeUpdate();
		            // 手动制造异常
		            int i = 3/0;
		
		            pstmt2.executeUpdate();
		            //提交事务
		            conn.commit();
		        } catch (Exception e) {
		            //事务回滚
		            try {
		                if(conn != null) {
		                    conn.rollback();
		                }
		            } catch (SQLException e1) {
		                e1.printStackTrace();
		            }
		            e.printStackTrace();
		        }finally {
		            JDBCUtils.close(pstmt1,conn);
		            JDBCUtils.close(pstmt2,null);
		        }
		
		
		    }
		
		}

http://www.niftyadmin.cn/n/1570449.html

相关文章

java实现,连接数据库的账号密码库,实现登录案例

先在MySQL创建一个表(包含账号和密码) 主类: import JDBCTool.Tool;import java.util.Scanner;public class INDEX {public static void main(String[] args) {Tool toolnew Tool();String usernull;String passwordnull;Scanner innew Scan…

Javascript设置表格全选,反选,全不选属性

Javascript设置表格全选&#xff0c;反选&#xff0c;全不选属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <style>.tb1{width: 500px;height: 300px…

xml(学习笔记)

XML: 概念&#xff1a;可标记语言 功能&#xff1a;存储数据 配置文件 在网络中传输 xml与HTML的区别&#xff1a; W3C&#xff08;万维网联盟&#xff09; 1.自定义标签 2.语法严格 3.xml存储数据&#xff0c;HTML展示数据 语法&#xff1a; 1.基本语法&#xff1a;xml的后…

Java中对于Jsoup的使用

Jsoup: 是一款Java的HTML的解释器&#xff0c;可以直接解析某个URL&#xff0c;HTML文本&#xff0c;它提供了一套非常省力的API&#xff0c;可以通过DOM,CSS,以及类似于jQuery的操作取出和操作数据。 快速入门&#xff1a; 1.导入jar包 2.获取document的对象 3.获取相应的标签…

(小白都能听懂)的海明校验码

海明码&#xff1a;一种利用奇偶性来检错和纠错的校验方法。 海明码校验码题目给出的原数据 步入主题&#xff1a; 1.确定校验码的位数k 2.确定校验码以及原数据的位置 3.求校验码 4.校验 本文使用偶校验方式来校验数据&#xff1a;01101001 第一步&#xff1a;确定校验码的…

Java中使用Servlet 生成验证码

Html: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script>/*分析&#xff1a;点击超链接或者图片&#xff0c;需要换一张1.给超链接和图片绑定单击事件2.重新设置图片…

javaWeb注册登录页面包含验证码

登录成功&#xff1a; 登录失败&#xff1a; 代码&#xff1a; &#xff08;1&#xff09;主页jsp <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><title>Title</title><script>w…

redis的学习笔记

Redis&#xff1a; 1. 概念&#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL Not Only SQL)&#xff0c;意即“不仅仅是SQL”&#xff0c;是一项全新的数据库理念&#xff0c;泛指非关系型的数据库。 随着互…