明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

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

[摘要]1、mysql事務(wù)是什么?事務(wù),一般是指要做的或所做的事情。在計算機術(shù)語中是指訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。2、mysql事務(wù)什么情況下使用? 事物一般用在并發(fā)操作多張表的時候使用,用于保證用戶的數(shù)據(jù)完整性~3、mysql事務(wù)怎么用?MYSQL的事務(wù)處理主要有...

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

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

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

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

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

MYSQL的事務(wù)處理主要有兩種方法
1.用begin,rollback,commit來實現(xiàn)
begin開始一個事務(wù)
rollback事務(wù)回滾
commit 事務(wù)確認(rèn)
2.直接用set來改變mysql的自動提交模式
mysql默認(rèn)是自動提交的,也就是你提交一個query,就直接執(zhí)行!可以通過
set autocommit = 0 禁止自動提交
set autocommit = 1 開啟自動提交
來實現(xiàn)事務(wù)的處理。
但要注意當(dāng)用set autocommit = 0 的時候,你以后所有的sql都將作為事務(wù)處理,直到你用commit確認(rèn)或 rollback結(jié)束,注意當(dāng)你結(jié)束這個事務(wù)的同時也開啟了新的事務(wù)!按第一種方法只將當(dāng)前的做為一個事務(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ū)動類  
	          /*  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");
	             
	             // 將自動提交設(shè)置為 false,
	             //若設(shè)置為 true 則數(shù)據(jù)庫將會把每一次數(shù)據(jù)更新認(rèn)定為一個事務(wù)并自動提交
	             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 {  
	            	  // 發(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("插入一個用戶李四");  
	              
	        //   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

以上就是MySQL事務(wù)處理基礎(chǔ)入門的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。