jdbc(ikun)实现事务的开启,提交,回滚代码示例

简介: jdbc(ikun)实现事务的开启,提交,回滚代码示例

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

2.操作:

   1.开启事务

   2.提交事务

   3.回滚事务

3。使用Connection对象来管理事务

   *开启事务;setAutoCommit(boolean autoCommit)调用该方法设置参数为false则为开启事务

   *提交事务:commit();

   *回滚事务:rollback();

模拟银行转账

一个失去荔枝的女大学生给bkpp赚钱的故事,以防她过度追星,我们设置math异常让事务回顾,让她永远给bkpp赚不了钱,然后报名算法课!!!

代码如下

做的时候遇到问题:给?赋值时候比如(sql中的第鸡个?的值,需要的值)

写的有点不符合逻辑,慢慢看把,测试结果就不放了,代码是没有问题的

package cs.itcast.jdbc;
import java.sql.*;
public class jdbcshiwu {
    public static void main(String[] args) {
        PreparedStatement pstmt1 = null;
        PreparedStatement pstmt2 = null;
        Connection conn = null;
        //注册驱动
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            //获取连接对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zzt?serverTimezone=GMT&useSSL=false","root","root");
            //定义sql
            conn.setAutoCommit(false);
            String sql1 = "update account set balance =balance - ? where name = ?";
            String sql2 = "update account set balance =balance + ? where name =  ?";
            //获取执行sql对象
            pstmt1 =  conn.prepareStatement(sql1);
            pstmt2 =  conn.prepareStatement(sql2);
            //执行sql
            //设置啊参数
            pstmt2.setDouble(1,5000);
            pstmt2.setString(2,"bkpp");
            pstmt1.setDouble(1,5000);
            pstmt1.setString(2,"张润琦");
            //执行sql
            pstmt2.executeUpdate();
            //手动制造异常
            int i =3/0;
            pstmt1.executeUpdate();
                conn.commit();
        } catch (Exception e) {
            //设置事务回滚
            try {
                if(conn!=null)
                conn.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }
        finally {
            if(pstmt1!=null) {
                try {
                    pstmt1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(pstmt2!=null) {
                try {
                    pstmt2.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
相关文章
|
12月前
|
Java 数据库连接
27SpringBoot之JDBC(完整代码)
27SpringBoot之JDBC(完整代码)
71 0
|
12月前
|
SQL Java 数据库连接
26SpringBoot之JDBC(关键代码)
26SpringBoot之JDBC(关键代码)
69 0
|
12月前
|
SQL Java 数据库连接
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
151 0
|
12月前
|
SQL Java 关系型数据库
Java的JDBC编程<-----用Java代码操作数据库(MySQL数据库)
Java的JDBC编程<-----用Java代码操作数据库(MySQL数据库)
53 0
|
5月前
|
XML Java 数据库连接
【Spring】JDBC、AOP、事务
【Spring】JDBC、AOP、事务
|
12月前
|
Oracle Java 关系型数据库
22JavaWeb基础 - JDBC事务
22JavaWeb基础 - JDBC事务
39 0
|
Java 数据库连接 数据库
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤(下)
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤
101 1
|
Java 数据库连接 数据库
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤(上)
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤
133 1
|
Java 数据库连接 数据库
JDBC快速入门(三) 代码再优化
JDBC快速入门(三) 代码再优化
|
SQL Java 关系型数据库
JDBC 事务和批处理 详解(通俗易懂)
JDBC 第四节 事务和批处理详解!
273 0