zoukankan      html  css  js  c++  java
  • mysql--事务demo1----

    package com.etc.entity;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Savepoint;
    
    import org.junit.Test;
    
    import com.etc.utils.JDBCUtil;
    
    public class TransactionDemo1 {
    //@Test
    public void testTransaction1()
    {
    	Connection conn=null;
    	PreparedStatement st=null;
    	ResultSet rs=null;
    	
    	try {
    		conn = JDBCUtil.getConnection();
    		conn.setAutoCommit(false);//通知数据库开启事务
    		String sql1 = "update account set money=money-100 where name='A'";
    		st = conn.prepareStatement(sql1);
    		st.executeUpdate();
    		String sql2 = "update account set money=money+100 where name='B'";
    		st = conn.prepareStatement(sql2);
    		st.executeUpdate();
    		conn.commit();//通知提交事务
    		System.out.println("成功!");
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	finally{
    		JDBCUtil.close(rs, st, conn);
    	}
    	
    }
    //@Test
    public void testTransaction2()
    {
    	Connection conn=null;
    	PreparedStatement st=null;
    	ResultSet rs=null;
    	try {
    		conn = JDBCUtil.getConnection();
    		conn.setAutoCommit(false);//通知数据库开启事务
    		String sql1 = "update account set money=money-100 where name='A'";
    		st = conn.prepareStatement(sql1);
    		st.executeUpdate();
    		int i=1/0;//异常语句   事务不能提交   数据库自动回滚
    		String sql2 = "update account set money=money+100 where name='B'";
    		st = conn.prepareStatement(sql2);
    		st.executeUpdate();
    		conn.commit();//通知提交事务
    		System.out.println("成功!");
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	finally{
    		JDBCUtil.close(rs, st, conn);
    	}
    	
    }
    //@Test
    public void testTransaction3()
    {
    	Connection conn=null;
    	PreparedStatement st=null;
    	ResultSet rs=null;
    	try {
    		conn = JDBCUtil.getConnection();
    		conn.setAutoCommit(false);//通知数据库开启事务
    		String sql1 = "update account set money=money-100 where name='A'";
    		st = conn.prepareStatement(sql1);
    		st.executeUpdate();
    		int i=1/0;//异常语句
    		String sql2 = "update account set money=money+100 where name='B'";
    		st = conn.prepareStatement(sql2);
    		st.executeUpdate();
    		conn.commit();//通知提交事务
    		System.out.println("成功!");
    	} catch (Exception e) {
    		try {
    			conn.rollback();//异常发生后   手动通知数据库事务回滚
    		} catch (SQLException e1) {
    			e1.printStackTrace();
    		}
    		e.printStackTrace();
    	}
    	finally{
    		JDBCUtil.close(rs, st, conn);
    	}
    	
    }
    @Test  //sql1有效;sql2无效;sql3无效;
    public void testTransaction4()
    {
    	Connection conn=null;
    	PreparedStatement st=null;
    	ResultSet rs=null;
    	Savepoint sp=null;//事务回滚点
    	try {
    		conn = JDBCUtil.getConnection();
    		conn.setAutoCommit(false);//通知数据库开启事务
    		
    		String sql1 = "update account set money=money-100 where name='A'";
    		st = conn.prepareStatement(sql1);
    		st.executeUpdate();
    		
    		sp=conn.setSavepoint();//设置事务回滚点
    		
    		String sql2 = "update account set money=money+100 where name='B'";
    		st = conn.prepareStatement(sql2);
    		st.executeUpdate();
    		
    		int i=1/0;//异常语句
    		String sql3 = "update account set money=money+100 where name='C'";
    		st = conn.prepareStatement(sql3);
    		st.executeUpdate();
    		
    		conn.commit();//通知提交事务
    		
    	} catch (Exception e) {
    		try {
    			conn.rollback(sp);//回滚到事务回滚点
    			conn.commit();//回滚之后提交
    		} catch (SQLException e1) {
    			
    			e1.printStackTrace();
    		}
    		e.printStackTrace();
    	}
    	finally{
    		JDBCUtil.close(rs, st, conn);
    	}
    	
    }
    }
    

      

  • 相关阅读:
    e.printStackTrace()打印在哪里以及如何e.printStackTrace()的内容打印在日志中
    oracle分组并在组内排序
    Java.util.Calendar类
    oracle分页查询
    两个map合并
    【自动化测试】无需图形界面环境下的浏览器开源项目
    【运维工具】logrotate 日志管理神器
    如何查看google chrome 插件源码
    phpexcel 读取数据
    常用开发资源收集
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6281425.html
Copyright © 2011-2022 走看看