首页 > 代码库 > java语言MySQL数据库事务的处理
java语言MySQL数据库事务的处理
事务处理流程
1、屏蔽自动提交功能
2、处理事务
3、恢复自动提交功能
代码实例
执行程序之前数据表的样子
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();
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre"> </span>conn.rollback();
<span style="white-space:pre"> </span>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(); } } }
java语言MySQL数据库事务的处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。