门户网站推广优势,cad精品课网站建设,品牌建设最高境界是培育客户成为,怎么做网站源码目录
一、准备工作
二、在MySQL中操作事务#xff08;重点#xff09;
第一种方式#xff1a;使用命令的方式
第二种方式#xff1a;设置MySQL事务不默认提交的方式
结
三、在JDBC中操作事务#xff08;掌握#xff09;
第一种方式#xff1a;使用命令的方式
第…目录
一、准备工作
二、在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.commit();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.commit();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对应实际数据库名称、用户名和密码必要时请更改成自己对应的。】