`

Java事务处理类(源码)

阅读更多

今天晚上写了一个Java关于Mysql数据库的事物处理类,实现回滚&&部分回滚功能。

 

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();
     }

   }

    }

}

 

代码测试通过,完美运行。

 

施杨出品!!!

分享到:
评论

相关推荐

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

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

    Java+Web项目企业事务管理系统源码 (1)Java源码

    这是一个基于Java技术的Web项目,主要关注的是企业事务管理系统的实现。这个系统源码的提供,对于学习和理解Java在企业级应用中的实践具有很高的价值。以下将详细讲解与Java Web项目相关的知识点。 1. **Java编程...

    java源码包---java 源码 大量 实例

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    Java Web项目企业事务管理系统源码

    Java Web项目企业事务管理系统源码,详细的代码注释 本系统的开发工具具体如下。 ● 系统开发平台:MyEclipse 6.5。 ● 数据库管理系统软件:MySQL 5.0。 ● 运行平台:Windows 2000/Windows XP/Windows 2003/...

    java 网上支付源码

    4. **事务处理**:在Java网上支付源码中,事务管理是核心部分,需实现ACID(原子性、一致性、隔离性、持久性)特性,确保支付操作的可靠性和一致性。例如,使用JTA(Java Transaction API)进行分布式事务管理。 5....

    Java+Web项目企业事务管理系统源码.zip

    【Java+Web项目企业事务管理系统源码.zip】这个压缩包包含了一个典型的企业级事务管理系统的源代码,适合学习和理解企业级应用的开发流程。该系统以Java编程语言为基础,结合Web技术,构建了一个功能完善的事务处理...

    电子报纸管理系统_java版本源码Java源码

    在源码中,开发者可能使用了Java SE(标准版)进行后端逻辑处理,同时结合JavaFX或Swing构建前端用户界面。JavaFX提供了一套丰富的组件库,可以创建现代、美观且响应式的图形用户界面,而Swing则是一个较为传统的UI...

    Java企业门户网站源码(含数据库).rar

    3. **安全机制**: 企业网站通常需要用户认证和授权功能,源码可能包含了Spring Security或者Apache Shiro等安全框架的实现,用于处理登录、权限控制和会话管理。 4. **前后端分离**: 现代企业网站往往采用前后端...

    Java企业日常事务管理系统论文+源码.rar

    Java企业日常事务管理系统论文+源码Java企业日常事务管理系统论文+源码Java企业日常事务管理系统论文+源码Java企业日常事务管理系统论文+源码Java企业日常事务管理系统论文+源码Java企业日常事务管理系统论文+源码...

    java论坛源码 论坛源码

    例如,Spring框架可以用于处理依赖注入和事务管理,提供松散耦合的组件,便于代码维护和扩展。Struts框架则专注于控制层,帮助处理HTTP请求并转发到相应的业务逻辑。而Hibernate作为持久层框架,简化了数据库操作,...

    Java聚合支付源码

    5. **异常处理与事务管理**:在处理支付过程中,可能会遇到网络问题、服务器错误等情况,因此源码中会包含完善的异常处理机制,以及使用Spring的Transaction API进行事务管理,保证数据一致性。 6. **测试与调试**...

    基于java酒店管理系统源码Java源码

    2. **Spring框架**:作为Java企业级应用的主流框架,Spring可能被用来管理依赖、处理事务、实现AOP(面向切面编程)等,提高代码的结构和灵活性。 3. **JDBC与数据库操作**:系统可能会使用JDBC(Java Database ...

    Java+Web项目企业事务管理系统源码

    总的来说,Java+Web项目企业事务管理系统源码结合了Java和Web技术的优势,提供了全面的企业事务管理解决方案,包括数据存储、事务处理、用户交互和安全性等多个方面,是学习和实践Java Web开发的宝贵资源。

    java100个源码

    这将涉及到数据库连接、SQL查询、事务处理等知识点。如果包含了数据库文件,那么你可以实际运行这些例子,进一步了解数据库操作的全过程。 配置环境的讲解对于初学者尤其重要,因为设置开发环境往往是学习新语言的...

    java实用组件集 源码

    本资源“java实用组件集 源码”特别关注于数据库操作,是开发人员处理数据存储与检索的一个强大工具。源码包含在第二章“数据库组件”中,展示了如何实现JDBC(Java Database Connectivity)的功能,以及附加的分页...

    Java 酒店管理 系统 源码

    【Java酒店管理系统源码】是一个基于Java技术和J2EE框架实现的综合性软件项目,它涵盖了酒店日常运营的各项功能,如客房预订、入住登记、退房处理、账单结算等。这个系统是经过一个五人开发小组半个多月的辛勤工作...

    java源码包2

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    Java+Web项目企业事务管理系统源码Java实用源码整理learns

    通过研究和实践这个项目,开发者不仅可以深入理解Java事务管理,还能掌握Web项目开发的整个生命周期,包括设计、编码、测试和部署。同时,这也是一个提升Java EE技能和熟悉企业级开发流程的好机会。

    java经典项目源码百度云.zip

    4. **Spring框架**:Java后端开发常用的全功能框架,它提供了依赖注入、AOP(面向切面编程)、事务管理等功能,源码中可能包含Spring配置和使用示例。 5. **MyBatis框架**:MyBatis是一个优秀的持久层框架,它支持...

    java图书管理系统源码

    它的Action类是处理请求的核心,配置在struts.xml文件中,定义了URL与处理方法的映射。 3. Hibernate框架:Hibernate是一个强大的对象关系映射(Object-Relational Mapping,ORM)工具,它可以将Java对象映射到...

Global site tag (gtag.js) - Google Analytics