主页 > 人工智能  > 

事务--实操演示

事务--实操演示

目录

一、准备工作

二、在MySQL中操作事务(重点)

第一种方式:使用命令的方式

第二种方式:设置MySQL事务不默认提交的方式

三、在JDBC中操作事务(掌握)

第一种方式:使用命令的方式

第二种方式:设置MySQL事务不默认提交的方式


在这篇Mybatis---事务_mybits事务-CSDN博客 中有事务相关理论知识,在此实操演示一遍事务操作。

仍旧是以经典例子转账做演示:

一、准备工作

【win】+【R】 输入cmd;

 进到终端后输入【mysql -u root -p】然后输入密码;后续操作在这里展开演示。

输入【user】+【想要切换的数据库】 

 

输入【show tables】查看所有表

 

可以看见我这个数据库中有这么多表。

二、在MySQL中操作事务(重点)

 完成上述的准备工作后,  接下来就可以正常操作sql语句了: e.g 先展示一下我们要演示操作的表吧!

我们将利用这个表模拟一个转账操作,其中张三给李四转1000元。下面是两种使用事务的方法的具体操作流程: 

第一种方式:使用命令的方式

开启事务

START TRANSACTION;

执行转账操作

从张三账户扣除1000元

UPDATE account SET money = money - 1000 WHERE name = '张三';

给李四账户增加1000元

UPDATE account SET money = money + 1000 WHERE name = '李四';

提交事务

如果转账操作成功,提交事务

COMMIT;

如果转账操作失败,回滚事务

ROLLBACK; 第二种方式:设置MySQL事务不默认提交的方式

查看当前事务是否默认提交

SHOW VARIABLES LIKE 'autocommit';

设置MySQL的数据库的事务不默认提交

SET autocommit = 0;

执行转账操作

从张三账户扣除1000元

UPDATE account SET money = money - 1000 WHERE name = '张三';

给李四账户增加1000元

UPDATE account SET money = money + 1000 WHERE name = '李四';

手动提交或回滚事务

如果转账操作成功,提交事务

COMMIT;

如果转账操作失败,回滚事务

ROLLBACK;

恢复默认提交设置(可选)

SET autocommit = 1; 结

上面两种情况下,一旦有操作不成功的情况,就可以输入ROLLBACK;回滚到转帐前。

三、在JDBC中操作事务(掌握) 第一种方式:使用命令的方式 import java.sql.*; public class TransactionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/yourdatabase"; String user = "yourusername"; String password = "yourpassword"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 开启事务 conn.setAutoCommit(false); try { // 从张三账户扣除1000元 String sql1 = "UPDATE account SET money = money - 1000 WHERE name = '张三'"; try (Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql1); } // 给李四账户增加1000元 String sql2 = "UPDATE account SET money = money + 1000 WHERE name = '李四'"; try (Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql2); } // 提交事务 conn mit(); System.out.println("转账成功!"); } catch (SQLException e) { // 回滚事务 conn.rollback(); System.out.println("转账失败,已回滚!"); e.printStackTrace(); } finally { // 关闭连接 conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } 第二种方式:设置MySQL事务不默认提交的方式 import java.sql.*; public class TransactionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/yourdatabase"; String user = "yourusername"; String password = "yourpassword"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 设置不默认提交 conn.setAutoCommit(false); try { // 从张三账户扣除1000元 String sql1 = "UPDATE account SET money = money - 1000 WHERE name = '张三'"; try (Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql1); } // 给李四账户增加1000元 String sql2 = "UPDATE account SET money = money + 1000 WHERE name = '李四'"; try (Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql2); } // 提交事务 conn mit(); System.out.println("转账成功!"); } catch (SQLException e) { // 回滚事务 conn.rollback(); System.out.println("转账失败,已回滚!"); e.printStackTrace(); } finally { // 恢复默认提交设置 conn.setAutoCommit(true); // 关闭连接 conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }

【注:yourdatabase、yourusername和yourpassword对应实际数据库名称、用户名和密码,必要时请更改成自己对应的。】

标签:

事务--实操演示由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“事务--实操演示