# Affairs generally refers to things to be done or done. In computer terms, it refers to a program execution unit (unit) that accesses and mayupdate various data items in the database.
Things are generally used when operating multiple tables concurrently to ensure user data integrity~
There are two main methods of transaction processing in MYSQL
1. Use begin, rollback, and commit to implement
begin to start a transaction
rollback transaction rollback
commit transaction confirmation
2. Directly use set to change the automatic submission mode of mysql
Mysql automatically submits by default, that is, if you submit a query, it will be executed directly! You can disable automatic submission by
set autocommit = 0
set autocommit = 1 and enable automatic submission
to implement transaction processing.
But please note that when you use set autocommit = 0, all your subsequent SQL will be processed as transactions until you confirm it with commit or rollback. Note that when you end this transaction, you also start a new transaction! According to the first method, only the current one is used as a transaction!
MYSQL only supports transaction processing for INNODB and BDB type data tables, and other types are not supported. !
package shiwu; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class test { public static void main(String[] args) { Connection conn = null; PreparedStatement ps1 = null; PreparedStatement ps2 = null; try { //加载驱动类 /* Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","bjpowernode"); */ String myDriver="com.mysql.jdbc.Driver"; String url="jdbc:mysql://127.0.0.1:3306/test"; Class.forName(myDriver); conn= DriverManager.getConnection(url,"root","bjpowernode"); // 将自动提交设置为 false, //若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交 conn.setAutoCommit(false); ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符 ps1.setObject(1, "张三"); ps1.setObject(2, "666666"); ps1.execute(); System.out.println("插入一个用户张三"); try { // 发生异常,回滚在本事务中的操做 conn.rollback(); // 事务回滚:转账的两步操作完全撤销 conn.close(); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?)"); ps2.setObject(1, "李四"); ps2.setObject(2, "123456"); ps2.execute(); System.out.println("插入一个用户李四"); // conn.commit();//提交事务 } catch (ClassNotFoundException e) { e.printStackTrace(); try { } catch (Exception e1) { e1.printStackTrace(); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { if(ps1!=null){ ps1.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }注意:需要引入mysql-connector-java-5.6-bin.jar
The above is the detailed content of Getting Started with MySQL Transaction Processing Basics. For more information, please follow other related articles on the PHP Chinese website!