热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

java语言MySQL数据库事务的处理_MySQL

事务处理流程1、屏蔽自动提交功能2、处理事务3、恢复自动提交功能代码实例执行程序之前数据表的样子prenamecodeclassjavaimportjavasql*;publicclassGetConnection{publicsta
事务处理流程

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();
		}
	}
}
\
        
推荐阅读
author-avatar
qgd2013_184
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有