`
Jatula
  • 浏览: 279267 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java事务处理类

阅读更多

Mysql5很好的支持了事物处理功能。不过支持这个功能的只有两种表类型。

 

分别是BDB,InnoDB。

 

先建立一个表,名为Kiss,数据为id (int),name(varchar),pop(varchar)。\

 

下面是源码:

 

import java.sql.*;

public class TestCommit{
    public static void main(String args[]){
    Connection conn=null;
    try{
       Class.forName("com.mysql.jdbc.Driver");
       String url="jdbc:mysql://localhost:3306/kiss";
       conn=DriverManager.getConnection(url,"username","password");
       boolean autoCommit=conn.getAutoCommit();
       //关闭自动提交功能
       conn.setAutoCommit(false);
       Statement stmt=conn.createStatement();
       stmt.executeUpdate("insert into sun values(15,'Hello','Beijing')");
       stmt.executeUpdate("insert into sun values(16,'Hi','shanghai')");
       ResultSet rs=stmt.executeQuery("select * from sun");
       while(rs.next()){
            System.out.print("DeptNo:"+rs.getInt(1));
            System.out.print("\tDeptName:"+rs.getString(2));
            System.out.println("\tLOC:"+rs.getString(3));
}   
//提交事务
    conn.commit();
//恢复原来的提交模式
    conn.setAutoCommit(autoCommit);
    stmt.close();
}catch(Exception e){
    System.out.println("操作失败!!!任务撤销!!!");
    try{
        //回滚、取消前述操作
        conn.rollback();
    }catch(Exception e1){
      e1.printStackTrace();
    }
}finally{
   try{
         if(conn!=null){
            conn.close();
         }
   }catch(Exception e1){
     e1.printStackTrace();
    }
   }
    }
}

 

执行第一次执行这个类,id如果不冲突,就可以顺利插入数据,第二次插入,id冲突,则实现回滚。

 

下面是部分回滚:

import java.sql.*;

public class TestSavepoint{
    public static void main(String args[]){
    Connection conn=null;
    try{
       Class.forName("com.mysql.jdbc.Driver");
       String url="jdbc:mysql://localhost:3306/kiss";
       conn=DriverManager.getConnection(url,"username","password");
       boolean autoCommit=conn.getAutoCommit();
       //关闭自动提交功能
       conn.setAutoCommit(false);
       Statement stmt=conn.createStatement();
       stmt.executeUpdate("insert into sun values(21,'Hello','Beijing')");
       stmt.executeUpdate("insert into sun values(22,'Hi','shanghai')");
       Savepoint sp1=conn.setSavepoint("p1");
       stmt.executeUpdate("insert into sun values(25,'shiyang','xingtai')");
       Savepoint sp2=conn.setSavepoint("p2");
       stmt.executeUpdate("insert into sun values(60,'shiyang','baoding')");
       ResultSet rs=stmt.executeQuery("select avg(id) from sun");
       rs.next();
       double avg_id=rs.getDouble(1);
       if(avg_id>100){
         conn.rollback(sp1);
       }else if(avg_id>30){
         conn.rollback(sp2);
       }
       conn.commit();
       rs=stmt.executeQuery("select * from sun");
       while(rs.next()){
            System.out.print(rs.getInt(1));
            System.out.print("\t"+rs.getString(2).trim());
            System.out.println("\t"+rs.getString(3));
}   
rs.close();
stmt.close();
    }catch(Exception e){
      System.out.println("Failure.rollback!!!");
   try{
       conn.rollback();
   }catch(Exception e1){
     e1.printStackTrace();
    }
    e.printStackTrace();
   }finally{
     try{
       if(conn!=null){
         conn.close();
       }
     }catch(Exception e1){
       e1.printStackTrace();
     }
   }
    }
}

 

 

分享到:
评论
1 楼 flowerjacky 2012-05-19  
明了

相关推荐

    java事务处理详解

    Java事务处理详解 Java事务处理是指在Java应用程序中对事务的管理和控制。事务是指一系列的操作,Either all succeed or all fail。Java事务处理的目的是为了确保数据的一致性和完整性。 Spring是Java事务处理的...

    Java事务处理详细介绍

    ### Java事务处理详细介绍 #### 一、什么是Java事务 在软件开发领域,特别是涉及数据库操作的应用中,**事务处理**是非常关键的一个概念。通常人们认为事务处理与数据库操作紧密相关,其实事务的概念远不止于此。...

    java事务处理总结

    ### Java事务处理总结 在Java开发中,事务处理是一项非常重要的技术,它能够确保数据的一致性和完整性。本文将从多个角度对Java中的事务处理进行深入解析,帮助开发者更好地理解和运用这一技术。 #### 一、事务的...

    Java事务处理总结

    ### Java事务处理总结 #### 一、什么是Java事务 事务是指一组操作的集合,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。在Java开发中,事务处理主要关注的是如何管理和控制对数据库的操作,...

    Java中的事务处理

    在Java编程领域,事务处理是确保数据一致性与完整性的关键机制。它主要用于数据库操作,确保一组操作要么全部成功,要么全部失败,遵循ACID(原子性、一致性、隔离性和持久性)原则。以下是对Java中事务处理的详细...

    java代码-使用java解决数据库事务处理的源代码

    java代码-使用java解决数据库事务处理的源代码 ——学习参考资料:仅用于个人学习使用!

    Java事务处理总结[归类].pdf

    Java事务处理是编程中确保数据一致性和完整性的关键机制,特别是在涉及数据库操作的场景下。事务处理遵循ACID原则,即原子性、一致性、隔离性和持久性。原子性确保事务作为一个不可分割的操作单元,要么全部执行,...

    java事务管理和事务分类

    在Java中,事务处理通常与数据库操作密切相关,尤其是通过JDBC(Java Database Connectivity)进行的数据库交互。 1. **原子性**:事务中的每个操作要么全部完成,要么全部不完成。如果在事务执行过程中发生错误,...

    JAVA设计模式之事务处理

    "JAVA设计模式之事务处理"主要关注如何在业务逻辑中有效地管理和控制事务。 事务处理在企业级应用中至关重要,因为它确保数据的一致性和完整性。Java平台提供了Java Transaction API (JTA) 来处理全局事务,适用...

    事务处理java案例代码

    在提供的压缩包中,“新建 Microsoft Office Word 文档.docx”可能包含了对案例的详细解释和步骤,而“Student”可能是包含具体事务处理代码的Java类或者数据库表名。这个案例可能涉及到学生信息的增删改查操作,...

    java Oracle事务处理

    java 代码写的关于Oracle的 事务处理

    java分布式事务demo

    分布式事务处理通常涉及ACID(原子性、一致性、隔离性和持久性)原则,这些原则是传统数据库事务管理的基础。在Java中,实现分布式事务的方法有很多,例如使用JTA(Java Transaction API)或者Spring框架的声明式...

    java事务处理

    ### Java事务处理详解 在Java开发中,事务处理是一项至关重要的技术,特别是在涉及数据库操作时。本文将全面阐述Java中的事务处理过程与方法,并通过具体的示例代码来帮助读者更好地理解这一概念。 #### 一、Java...

    java事务 - 传递Connection

    Spring框架提供了更高级别的事务管理功能,包括编程式事务管理和声明式事务管理,可以简化事务处理,并提供事务传播行为等高级特性。 综上所述,Java事务管理的核心是`Connection`对象的正确使用和管理。通过共享同...

    Java事务的简单代码

    以下是一个简化的Java事务处理代码示例,适用于初学者理解和学习。 首先,我们需要了解Java中的JDBC(Java Database Connectivity)API,它是Java与数据库交互的标准接口。在处理事务时,我们需要使用Connection...

    java事务 - threadlocal

    在Spring框架中,我们可以使用@Transactional注解来实现声明式事务管理,使得事务处理更加简洁和高效。 接下来,我们讨论ThreadLocal。ThreadLocal是Java提供的一种线程局部变量,它的每个线程都有自己的副本,互不...

    java事务设计策略

    - **混合事务管理**:结合编程式和声明式的优点,适用于需要高度定制化事务处理的应用场景。 #### 五、高级事务管理技巧 - **事务传播行为**:定义了当前方法调用时如何与现有的事务相结合。 - **事务隔离级别**:...

    Java(JDBC)事务处理

    Java(JDBC)事务处理

    java事务 - 使用动态代理

    Java事务管理是应用程序中至关重要的部分,特别是在处理数据库操作时,确保数据的一致性和完整性。在Java中,事务管理可以通过多种方式实现,其中一种高效且灵活的方法是利用动态代理。动态代理可以帮助我们实现事务...

Global site tag (gtag.js) - Google Analytics