事務,一般是指要做的或所做的事情。在電腦術語中是指存取並可能更新資料庫中各種資料項目的一個程式執行單元(unit)。
事物一般用在並發作業多張表格的時候使用,用來確保使用者的資料完整性~
MYSQL的事務處理主要有兩種方法
1.用begin,rollback,commit來實作
begin開始一個事務
rollback事務回溯
commit 事務確認
2.直接用set來改變mysql的自動提交模式
mysql預設是自動提交的,也就是你提交一個query,就直接執行!可以透過
set autocommit = 0 禁止自動提交
set autocommit = 1 開啟自動提交
來實現事務的處理。
但要注意當用set autocommit = 0 的時候,你以後所有的sql都將作為事務處理,直到你用commit確認或 rollback結束,注意當你結束這個事務的同時也開啟了新的事務!依第一種方法只將目前的做為一個事務!
MYSQL只有INNODB和BDB型別的資料表才支援事務處理,其他的型別是不支援的!
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
以上是MySQL事務處理基礎入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!