当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

JDBC中事务处理应用

发表于: 2014-09-29   作者:百合不是茶   来源:转载   浏览:
摘要:   解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复   事务常用命令:             Commit提交         

 

解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复

 

事务常用命令:

            Commit提交

            rollback;回滚

           savepoint;保存点

 

例如在实际开发中我们会处理很多的数据,但是一旦提交数据将无法修改,这时会出现灾难性的事件;因此事务控制就显得格外的重要与特别

 

     a),rollback还原为厨师数据,将sal改成1200

update emp  set sal=1200 where ename='SMITH

     

    此时我发现不想改sal的数,如果没commit还可以还原

 rollback;

      rollback是每次都还原原始数据800

 

 

  b),savepoint保存点和commit的使用 

    1 ,将sal改为800

update emp  set sal=800 where ename='SMITH

    

   2 ,将sal改为500 并设置savepoint a1

update emp  set sal=800 where ename='SMITH

   

  3,将sal改为1500 并设置savepoint a2

update emp  set sal=800 where ename='SMITH

  

   4,还原a2

   rollback to a2;

 

 通过设置savepoint可以还原到我们需要的数据地点

 

事物;是为了保证对数据操作的一致性和统一性 
 commit;提交事物,将数据更新到数据库中去,一旦事物被提交就无法还原
 rollback 回滚  还原到上一次提交事物时的状态
 savepoint a1 创建一个还原点,a1是还原点的名称,rollback to a1;还原到a1的保存点
  
    一旦提交事物所有的保存点都失效
    在执行退出命令的时候会自动的先提交事物

     jdbc中一旦执行数据编译自动提交

 

 

 

JDBC中事务的应用;保证数据的一致性

 

  如下代码;没有加入事务的概念,数据会出错并且不能回复

 

package 数据库操作;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *  * @author Administrator
 */
public class OracleDemo {

	public static void main(String[] args)  {
		 Connection conn;
		try {
			//1.加载数据驱动
			Class.forName("oracle.jdbc.driver.OracleDriver");
		
			//2.定义字符串
			String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
			
			//3,链接数据库
			 conn = DriverManager.getConnection(url, "scott", "tiger");
			
			//4,创建数据操作对象
			Statement stm = conn.createStatement();
		    //5,更新需要的数据
			String sql = "Update emp set sal = 800 where ename ='SMITH'";
			//两行错的
			String str = "abds";
			int len = Integer.parseInt(str);
			int num =stm.executeUpdate(sql);
			System.out.println(len);
		     System.out.println("有"+num+"行受影响");			
			}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();				
	 }
	}
}

 

 //编译出错,但是sql语句已经执行,commit已经提交

 

 

 

 

 

怎么设置出错时commit不自动的提交

 

 

 

 

package 数据库操作;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * java连接JDBC的事物控制联系
 * @author Administrator
 *roolback  ,commit,savepoint  事物控制
 */
public class OracleDemo {

	public static void main(String[] args)  {
		 Connection conn;
		try {
			//1.加载数据驱动
			Class.forName("oracle.jdbc.driver.OracleDriver");
		
			//2.定义字符串
			String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
			
			//3,链接数据库
			 conn = DriverManager.getConnection(url, "scott", "tiger");
			
			//4,创建数据操作对象
			Statement stm = conn.createStatement();
			
			try{
				//设置禁止自动提交
			conn.setAutoCommit(false);
			//5,更新需要的数据
			String sql = "Update emp set sal = 800 where ename ='SMITH'";
			String str = "abds";
			int len = Integer.parseInt(str);
			int num =stm.executeUpdate(sql);
			System.out.println(len);
			 System.out.println("有"+num+"行受影响");
			 //执行完毕后再提交
			 conn.commit();	
		} catch (Exception e) {
			 conn.rollback();
			 System.out.println("执行了回滚的操作...........");
			e.printStackTrace();				
	}
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();				
	 }
	}
}

 

//输出结果;一行受影响

 

 

 

 

 

 

 

JDBC中事务处理应用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto
数据表student: 数据类型: 数据字段: 下面是jdbc事务处理列子: 清单如下: import java.sql.Con
摘要 学习如何在Java桌面应用中部署基于Apache Derby的Java DB。该文章使用住址名册例子来向你演示
存储过程是由SQL语句,及其数据库相关的增强指令和流程控制语句书写的过程程序,经过数据库编译和优
分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这
在处理SSIS包的数据ETL操作过程中,我们经常遇到的一个问题就是一系列步骤在运行的过程中,如果中间
在数据库操作中,事务处理十分重要,在Spring中提供了强大的事务处理功能,不仅可以用编程的方式实
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了“事务”这个词,坦白讲虽然作为计
第8章 事务处理 8.1 事务的基本概念 事务处理在应用系统开发中起着重要的作用。简单地来说,事务就
如果说上述EBS的“表单与查询”的系统设计体现的正是“从业务到技术”,比较容易理解与掌握,那么,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号