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() ;			// 数据库关闭
    	}
    };
    

      

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/wujixing/p/5443986.html
Copyright © 2011-2022 走看看