zoukankan      html  css  js  c++  java
  • JAVA基础--事务处理

    事务处理:

    1. 取消掉自动提交 set autocommmit=0

    2. 开始事务  bigin

    3. 进行一系列操作 update

    4. 如果操作全部合格, 提交事务  commit

    5. 如果发现有个地方有问题, 事务回滚  rollback

    6. 或者设置一个savepoint, 保存事务的提交点.  

    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.Statement ;
    public class TranDemo02{
    	// 定义MySQL的数据库驱动程序
    	public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    	// 定义MySQL数据库的连接地址
    	public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    	// MySQL数据库的连接用户名
    	public static final String DBUSER = "root" ;
    	// MySQL数据库的连接密码
    	public static final String DBPASS = "mysqladmin" ;
    	public static void main(String args[]) throws Exception{	// 所有异常抛出
    		Connection conn = null ;		// 数据库连接
    		Statement stmt = null ;		// 定义数据库操作
    		Class.forName(DBDRIVER) ;	// 加载驱动程序
    		conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
    
    		conn.setAutoCommit(false) ;	// 取消掉自动提交
    
    		stmt = conn.createStatement() ;
    		stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
    		stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
    		// 加入“'”之后,此SQL语法就出现了错误,所以,肯定执行到此语句的时候出现代码错误
    		stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-'3','hello-3',13,'男','1977-06-01') ") ;
    		stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
    		stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
    		try{
    			int temp[] = stmt.executeBatch() ;
    			System.out.println("更新了:" + temp.length+ "条数据。") ;
    			conn.commit() ;	// 所有的操作成功了
    		}catch(Exception e){
    			try{
    				conn.rollback() ;
    			}catch(Exception e1){
    				
    			}
    		}
    		stmt.close() ;
    		conn.close() ;			// 数据库关闭
    	}
    };
    

      

    设置savepoint

    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.Statement ;
    import java.sql.Savepoint ;
    public class TranDemo03{
    	// 定义MySQL的数据库驱动程序
    	public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    	// 定义MySQL数据库的连接地址
    	public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    	// MySQL数据库的连接用户名
    	public static final String DBUSER = "root" ;
    	// MySQL数据库的连接密码
    	public static final String DBPASS = "mysqladmin" ;
    	public static void main(String args[]) throws Exception{	// 所有异常抛出
    		Connection conn = null ;		// 数据库连接
    		Statement stmt = null ;		// 定义数据库操作
    		Class.forName(DBDRIVER) ;	// 加载驱动程序
    		conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
    
    		conn.setAutoCommit(false) ;	// 取消掉自动提交
    
    		stmt = conn.createStatement() ;
    		stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
    		stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
    		Savepoint sp = conn.setSavepoint() ;		// 设置保存点
    		
    		stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
    		stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
    			" VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
    		try{
    			conn.rollback(sp) ;	// 回滚到保存点
    			conn.commit() ;	// 所有的操作成功了
    		}catch(Exception e){
    			e.printStackTrace() ;
    		}
    		stmt.close() ;
    		conn.close() ;			// 数据库关闭
    	}
    };
    

      

  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/wujixing/p/5443986.html
Copyright © 2011-2022 走看看