程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> java語言MySQL數據庫事務的處理

java語言MySQL數據庫事務的處理

編輯:MySQL綜合教程

java語言MySQL數據庫事務的處理


事務處理流程

1、屏蔽自動提交功能

2、處理事務

3、恢復自動提交功能

代碼實例

執行程序之前數據表的樣子

\

 


public class GetConnection{
	public static void main(String[] args){
		Access2Database adb=new Access2Database();
		Connection conn=adb.getConn();	
		
		//transaction dealing
		PreparedStatement pstam=null;
		try{
			conn.setAutoCommit(false);
			String sql="delete from student where name='a' and major=?";
			pstam=conn.prepareStatement(sql);
			pstam.setString(1, "Chinese");
			pstam.executeUpdate();

			conn.rollback();
			conn.commit();
		}catch(SQLException e){
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
		
		//release the resource of the program
		try{
			pstam.close();
			conn.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
}

之後的樣子

 

\
可見沒有發生改變,事務回滾成功

======================================================================

除此應用外,還可以保存事務處理的中間態,最後可以恢復到此中間保存狀態

數據表之前的狀態

\

看代碼

 

import java.sql.*;

public class GetConnection{
	public static void main(String[] args){
		Access2Database adb=new Access2Database();
		Connection conn=adb.getConn();	
		
		//transaction dealing
		PreparedStatement pstam=null;
		try{
			conn.setAutoCommit(false);
			String sql="delete from student where name='a' and major=?";
			pstam=conn.prepareStatement(sql);
			pstam.setString(1, "Chinese");
			pstam.executeUpdate();
			//conn.commit();
			
			Savepoint sp=conn.setSavepoint();
			sql="insert into student(name,major,score) values('g','Math','99');";
			pstam=conn.prepareStatement(sql);
			pstam.executeUpdate();
			conn.rollback(sp);
			conn.commit();
		}catch(SQLException e){
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
		
		//release the resource of the program
		try{
			pstam.close();
			conn.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
}
\

						

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved