MySQL事務(wù)處理基礎(chǔ)入門

1、mysql事務(wù)是什么?

事務(wù),一般是指要做的或所做的事情。在計(jì)算機(jī)術(shù)語中是指訪問并可能mysql數(shù)據(jù)庫中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。

2、mysql事務(wù)什么情況下使用?

? ?事物一般用在并發(fā)操作多張表的時(shí)候使用,用于保證用戶的數(shù)據(jù)完整性~

3、mysql事務(wù)怎么用?

MYSQL的事務(wù)處理主要有兩種方法
1.用begin,rollback,commit來實(shí)現(xiàn)
? ? begin開始一個(gè)事務(wù)
? ? rollback事務(wù)回滾
? ? commit 事務(wù)確認(rèn)
2.直接用mysql來改變mysql的自動(dòng)提交模式
? ? mysql默認(rèn)是自動(dòng)提交的,也就是你提交一個(gè)query,就直接執(zhí)行!可以通過
? ? set autocommit = 0 禁止自動(dòng)提交
? ? set autocommit = 1 開啟自動(dòng)提交
? ? 來實(shí)現(xiàn)事務(wù)的處理。
但要注意當(dāng)用set autocommit = 0 的時(shí)候,你以后所有的sql都將作為事務(wù)處理,直到你用commit確認(rèn)或 rollback結(jié)束,注意當(dāng)你結(jié)束這個(gè)事務(wù)的同時(shí)也開啟了新的事務(wù)!按第一種方法只將當(dāng)前的做為一個(gè)事務(wù)!

MYSQL只有 INNODB和BDB類型的數(shù)據(jù)表才支持事務(wù)處理,其他的類型是不支持的!

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?{??  	????????????//加載驅(qū)動(dòng)類??  	??????????/*??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");  	?????????????  	?????????????//?將自動(dòng)提交設(shè)置為?false,  	?????????????//若設(shè)置為?true?則數(shù)據(jù)庫將會(huì)把每一次數(shù)據(jù)更新認(rèn)定為一個(gè)事務(wù)并自動(dòng)提交  	?????????????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("插入一個(gè)用戶張三");??  	??????????????  	????????????try?{??  	????????????	??//?發(fā)生異常,回滾在本事務(wù)中的操做  	????????????????conn.rollback();  	?????????????????//?事務(wù)回滾:轉(zhuǎn)賬的兩步操作完全撤銷  	?????????????????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("插入一個(gè)用戶李四");??  	??????????????  	????????//???conn.commit();//提交事務(wù)??  ?????  	  	????????}?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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享