oracle jta,JBoss+Oracle+JTA配置分布式事务

package myjta.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

import javax.transaction.UserTransaction;

import myjta.util.MyException;

public class DataBase {

//事务管理对象

private UserTransaction ut = null;

//数据库连接对象

private Connection conn = null;

//(Context)上下文对象

private Context context = null;

//本身的对象

private static DataBase dataBase = null;

//操作数据库对象

private PreparedStatement pstmt = null;

//数据集对象

public ResultSet res = null;

private DataBase(){

try {

context = new InitialContext();

} catch (NamingException e) {

e.printStackTrace();

}

}

/**

* 返回自己本身的对象。

* @return 返回DataBase对象

*/

public static DataBase getDataBase(){

if(dataBase==null){

dataBase = new DataBase();

}

return dataBase;

}

/**

* 创建事务管理对象UserTransaction

* @return 返回事务管理对象UserTransaction

*/

public UserTransaction getUserTransaction(){

try{

//java:comp/UserTransaction是固定写法。

ut = (UserTransaction)context.lookup("java:comp/UserTransaction");

System.out.println("ut = "+ut);

}catch(Exception ex){

ex.printStackTrace();

System.out.println("创建UserTransaction"+ex.getMessage());

}

return ut;

}

/**

* 创建数据库连接

*/

public void getConn(){

try{

//其中java:/是前缀XAoracleDs是上面配置的oracle-ax-ds.xml中节点的名称。

DataSource ds = (DataSource)context.lookup("java:/XAOracleDS");

conn = ds.getConnection();

}catch(Exception ex){

ex.printStackTrace();

System.out.println("创建数据库连接失败~!"+ex.getMessage());

}

}

/**

* 对数据进行增删改操作的方法

* @param sql 要执行的SQL语句

* @param arrgs 需要想SQL语句中绑定的数据

* @return 返回受影响行数

*/

public int excuteUpdate(String sql,String[] arrgs){

this.getConn();

int result = 0;

try {

pstmt = conn.prepareStatement(sql);

if(arrgs!=null && arrgs.length>0){

for(int i=0;i

pstmt.setString(i+1, arrgs[i]);

}

}

result = pstmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

throw new MyException("增加删除修改数据错误!"+e.getMessage(),e);

}finally{

this.closePstmt();

this.closeConn();

}

return result;

}

/**

* 查询数据库数据的方法

* @param sql 要执行查询的SQL语句

* @param arrgs 要该SQL语句绑定的数据

* @return 返回结果集ResultSet

*/

public ResultSet excuteQuery(String sql,String[] arrgs){

try {

pstmt = conn.prepareStatement(sql);

if(arrgs!=null && arrgs.length>0){

for(int i=0;i

pstmt.setString(i+1, arrgs[i]);

}

}

res = pstmt.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

throw new MyException("查询数据错误"+e.getMessage(),e);

}

return res;

}

/**

* 关闭数据库连接

*/

public void closeConn(){

try{

if(conn!=null){

conn.close();

conn = null;

}

}catch(Exception ex){

ex.printStackTrace();

}

}

/**

* 关闭PreparedStatement对象

*/

public void closePstmt(){

try {

if(pstmt!=null){

pstmt.close();

pstmt=null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 关闭ResultSet对象

*/

public void closeRes(){

try {

if(res!=null){

res.close();

res=null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值