WebLogic WorkShop中的数据库操作事务 - JTA

原创 2006年05月24日 11:23:00

此代码或许还有不正确的地方,不是最佳方案,但是能够满足事务的提交和回滚.

workshop中新建class文件(java),名字为jta.java,代码如下:

  1. package mypackage;
  2.  
  3. import java.io.Serializable;
  4. import java.sql.*;
  5. import javax.sql.*;
  6. import javax.naming.Context;
  7. import javax.naming.InitialContext;
  8. import javax.transaction.SystemException;
  9. import javax.transaction.UserTransaction;
  10. public class jta implements Serializable
  11. {
  12.     public Context ctx;
  13.     public UserTransaction tx;
  14.     public DataSource ds;
  15.     public Connection myConn;
  16.     public Statement stmt;
  17.     public String v_sqlstr;
  18.  
  19.     public void exeJTASQL()
  20.     {
  21.         int i;
  22.         String l_sqlstr[];
  23.  
  24.         if ( v_sqlstr.trim().length() == 0 )
  25.         {
  26.             System.out.println("参数错误");
  27.         }
  28.  
  29.         l_sqlstr = v_sqlstr.split(";");
  30.         try
  31.         {
  32.             ctx = new InitialContext();
  33.             tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
  34.             tx.begin();
  35.             ds = (DataSource)ctx.lookup("CMSDS");
  36.             myConn = ds.getConnection();
  37.             stmt = myConn.createStatement();
  38.             for ( i=0; i<l_sqlstr.length; i++ )
  39.             {
  40.                 if ( l_sqlstr[i].startsWith("insert") == true ||
  41.                      l_sqlstr[i].startsWith("update") == true ||
  42.                      l_sqlstr[i].startsWith("delete") == true )
  43.                 {
  44.                     System.out.println(i + ":" + l_sqlstr[i]);
  45.                     stmt.executeUpdate(l_sqlstr[i].toString().toString());
  46.                 }
  47.             }
  48.           
  49.             tx.commit();
  50.             System.out.println("数据提交");
  51.             stmt.close();
  52.             System.out.println("关闭stmt");
  53.         }
  54.         catch ( Exception e)
  55.         {
  56.             System.out.println("执行出错 message:" + e);  
  57.             try
  58.             {
  59.                 tx.rollback();
  60.                 System.out.println("事务回滚");
  61.             }
  62.             catch(SystemException se)
  63.             {
  64.                 System.out.println("回滚错误 message:" + se);
  65.             }
  66.         }
  67.         finally
  68.         {
  69.             try
  70.             {
  71.                 if ( myConn != null )
  72.                 {
  73.                     if ( !myConn.isClosed() )
  74.                     {
  75.                         myConn.close();
  76.                         System.out.println("关闭myConn");
  77.                     }
  78.                 }
  79.             }
  80.             catch(SQLException sqle)
  81.             {
  82.                 ;
  83.             }
  84.         }
  85.     }
  86.  
  87.     public void setV_sqlstr(String v_sqlstr)
  88.     {
  89.         this.v_sqlstr = v_sqlstr;
  90.     }
  91. }

在workshop中的jpf程序的Action中使用:

  1. import mypackage.jta;
  2. /**
  3.  * @jpf:action
  4.  * @jpf:forward name="success" path="newPage1.jsp"
  5.  */ 
  6. protected Forward newAction1() throws Exception
  7. {
  8.         String sqlstr;
  9.    
  10.         jta jtatest;               /*创建类jta的一个实例jtatest*/
  11.         jtatest = new jta();       /*初始化jtatest*/
  12.         /*组装sqlstr语句,注意每个语句结束的";"符号,语句必须是insert,update,delete开头*/
  13.         sqlstr = "insert into table values('aaaa',11,222,'aaaaaaa');";
  14.         sqlstr = sqlstr + "update table1 set name='高级管理员';";
  15.         sqlstr = sqlstr + "insert into table3 values('111',802,100);";
  16.         System.out.println("sqlstr:" + sqlstr);
  17.         jtatest.setV_sqlstr(sqlstr); /*将这段sql语句赋值给实例jtatest的成员变量*/
  18.         jtatest.exeJTASQL();         /*调用方法*/
  19.         return new Forward("success");
  20. }

spring事务与数据库操作

  • 2017年06月11日 20:38
  • 464KB
  • 下载

JavaEE5学习笔记01-JTA和数据库事务

  • 2011年05月16日 17:14
  • 276KB
  • 下载

MFC数据库操作 - 事务处理

事务简介: 事务是为了完成一个特定的功能或任务而要进行的一系列的处理步骤,事务代表了所需的系列动作的整体。 一个事务的所有语句被作为整体执行,遇到错误时,可以回滚事务、取消事务内所做的所有改变。 ...

一个Spring事务中,前后两次数据库操作的影响关系

有这么一个场景,在程序的service层的一个方法中有两次数据库访问操作(分两次调用不同dao的insert方法,一个dao只包含对一个数据表的操作方法),且都会改动数据。第一,往users表添加记录...
  • Ronux
  • Ronux
  • 2012年08月30日 14:03
  • 2848

Oracle数据库操作大全(七)-——事务处理

Oracle中事务处理:

Yii 1.0数据库操作 查询、增加、更新、删除(事务处理)

http://blog.sina.com.cn/s/blog_66ac09390102vkpd.html 1、根据条件查询一个集合 $objectResult=Post::model()->fi...
  • wzm112
  • wzm112
  • 2016年01月07日 12:07
  • 822

关于数据库操作的事务

1.事务的概念:    对一组sql进行统一的提交或回滚操作,为了保证数据执行的一致性;(如果一个连续的操作中,所有的步骤全部成功执行,整个操作才算完成;如果有一个步骤失败,那么所有操作都失败)典型例...

一个典型的数据库操作事务死锁分析

【表A】与【表B】之间有外键约束(具体怎么约束的无所谓,因为外键和事务死锁没有绝对关系)。【表A】=主键表,【表B】=外键表。 公司有几位程序员写的代码总是出现死锁,现在将事务死锁情况重现. ...

跨数据库的事务管理配置jta

  • 2012年09月20日 15:16
  • 36KB
  • 下载

day03-spring与数据库操作的框架解析即dataSource的获取(JDBC)、使用spring中已经有的事务进行JDBC操作

数据库的操作:    固定的代码(模板,datasource的获取)+动态的参数(变化的SQL语句、参数等等)    模板模式的编程 代码的结构的解析:  JdbcTemplate extends J...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebLogic WorkShop中的数据库操作事务 - JTA
举报原因:
原因补充:

(最多只允许输入30个字)