c# 连oracle 报错:XACT_E_TMNOTAVAILABLE(0x8004D01B) 的解决

问题描述

我做了一个com+用来连接数据库,服务器端调用COM+,但在运行网页调用COM+时出现下面的错误,(数据库的连接肯定没写错,因为我把这个连接写到网页端时能连接)COM+好象也没错(因为我把连接去掉后返回string、int都不出错,但加上连接后返回就会出错)请各位大侠帮忙看看谢谢!分不是问题不够您说话没有可用的错误信息:XACT_E_TMNOTAVAILABLE(0x8004D01B)。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Data.OleDb.OleDbException:没有可用的错误信息:XACT_E_TMNOTAVAILABLE(0x8004D01B)。说明:dotnet2005,oracle10g,windows2003.上边的问题是其他会员贴出来的,我的问题类似,总之都是报exception:XACT_E_TMNOTAVAILABLE(0x8004D01B)解决办法:不要使用System.Data.OleDb.OleDbException;而使用Oracleproviderfor.net.方法是:addreference|.net|Oracle.DataAcess,并usingOracle.DataAccess.Client;usingOracle.DataAccess.Server;usingOracle.DataAccess.Types;在程序中如下使用即可:[Transaction(TransactionOption.Required)]publicclassDUser{/*返回所有类别的字符串,以分号隔开*/publicstring[]getUserList(){OracleConnectionconn=newOracleConnection(OraConnection.getConnString());OracleCommandcmd=newOracleCommand("SELECTID,Login_Name,Login_PWD,User_nameFROMOperaterWHERESTATUS=1");OracleDataReaderdr;string[]resultString=newstring[10];/*存返回的类别串*/inti=0;try{cmd.Connection=conn;conn.Open();dr=cmd.ExecuteReader();while(dr.Read()){longID=0;//IDstringloginName=null;//登陆名stringloginPwd=null;//登陆密码stringuserName=null;//名字ID=(long)dr.GetDouble(0);//类别IDloginName=dr.GetString(1);loginPwd=dr.GetString(2);userName=dr.GetString(3);resultString[i++]=loginName;}}catch(Exceptione){}finally{conn.Close();}returnresultString;}/*返回:注册成功;名字存在,注册失败*/publicstringResigter(stringloginName,stringpassword){stringresult=null;OracleConnectionconn=newOracleConnection(OraConnection.getConnString());OracleCommandcmd=newOracleCommand("INSERTINTOoperater(id,login_name,login_pwd)"+"VALUES(q_operator.nextval,'"+loginName+"','"+password+"')");longi=0;try{cmd.Connection=conn;conn.Open();i=cmd.ExecuteNonQuery();if(i>0)result="注册成功";}catch(Exceptione){result="名字存在,注册失败!";}finally{conn.Close();}returnresult;}/*返回:登陆成功或者失败*/publicstringLogin(stringloginName,stringpassword){stringresult=null;OracleConnectionconn=newOracleConnection(OraConnection.getConnString());OracleCommandcmd=newOracleCommand("SELECTCOUNT(id)tFROMoperaterWHERE"+"login_name='"+loginName+"'ANDlogin_pwd='"+password+"'");inti=0;try{cmd.Connection=conn;conn.Open();i=Convert.ToInt32(cmd.ExecuteScalar());result="登陆成功";}catch(OracleExceptionoe){result="数据库错误,用户名或密码错,登陆失败!";}catch(Exceptione){result="应用错误,登陆失败!";}finally{conn.Close();}returnresult;}}/*在这里配置数据库连接串*/[Transaction(TransactionOption.Required)]publicclassOraConnection{publicstaticstringgetConnString(){return"datasource=ORCL2;userid=CI;password=CI";//不使用微软的oledbprovider,有bug;使用oracleproviderfor.net}}大家注意数据库连接串

解决方案

解决方案二:
该回复于2009-06-18 17:30:27被版主删除

时间: 2024-08-23 19:47:37

c# 连oracle 报错:XACT_E_TMNOTAVAILABLE(0x8004D01B) 的解决的相关文章

Oracle报错ORA-00604 ORA-00376 数据库redo undo丢失恢复例子

运维DBA反映数据库存储故障,导致redo undo两个表空间数据文件丢失,数据库无法open启动 某集团的ebs系统因磁盘空间不足把redo和undo存放到raid 0之上,而且该库无任何备份.最终悲剧发生了,raid 0异常导致redo undo全部丢失,数据库无法正常启动(我接手之时数据库已经resetlogs过,但是未成功) 1.Oracle报错ORA-00604 ORA-00376 Sun Jul 27 11:31:27 2014 SMON: enabling cache recove

c++-win32 C++应用程序放到Server08下连接oracle报错

问题描述 win32 C++应用程序放到Server08下连接oracle报错 程序是C++的,连接本地Oracle数据库,方法为 CoInitialize(NULL);ConnectionPtr conn; try{ conn.CreateInstance(_uuidof(Connection)); conn->Open("Provider=OraOLEDB.Oracle.1;Data Source=ORACLE;Persist Security Info=false;Password=

项目从mysql迁移到oracle报错

问题描述 项目从mysql迁移到oracle报错 本来没有一点错误,迁移之后出现了很多,不知道哪位大神见过下面的问题: 17:23:54,967 ERROR BasicPropertyAccessor:118 - IllegalArgumentException in class: com.ebupt.dataWarehouse.entity.dataQualityMonitoring.MonTaskConEntity, setter method of property: TemporaryI

pl/sql developer-PL/SQL Developer 远程连接Oracle 报错无法解析指定的标识符

问题描述 PL/SQL Developer 远程连接Oracle 报错无法解析指定的标识符 环境: 虚拟机中安装CentOS 6.3 CentOS安装Oracle 11gr2 客户机Win7 问题介绍: 已经在CentOS 启动了实例,监听: 开放了1521端口:虚拟机跟客户机网络连通: 使用DBVisualizer可以连接成功目标实例: PL/SQL Dev连接就报错"ORA-12154: TNS:could not resolve the connect identifier specifi

hibernate连接oracle报错

问题描述 hibernate连接oracle报错 Exception in thread "main" java.lang.AbstractMethodError: Method oracle/jdbc/driver/OracleDatabaseMetaData.supportsNamedParameters()Z is abstract 解决方案 PB连接Oracle报错plsql 连接 oracle 报错:ora-12514 解决方案二: 你看看是不是你的驱动包的问题,该异常说的是

oracle 报错 ora-00905

问题描述 oracle 报错 ora-00905 report如下,求大神来看看 在行: 99 上开始执行命令时出错 - ALTER TABLE vet ADD CONSTRAINT vetpractice_vet_fk FOREIGN KEY (vetpractice_no, pet_no, owner_no) REFERENCES vetpractice (vetpractice_no, pet_no, owner_no) ON DELETE NO ACTION ON UPDATE NO A

sqlserver 转oracle 报错

问题描述 sqlserver 转oracle 报错 [Err] ORA-32031: illegal reference of a query name in WITH clause 解决方案 查询name的时候不合理的引用,, 解决方案二: Oracle 转换 SqlServer (转)

win8安装office2010失败报错代码2705怎么解决

win8安装office2010失败报错代码2705怎么解决   因为Windows 8上不支持Office 的中文输入法编辑器,即字体有冲突,此类情况仅出现在 Windows 8 64Bit 消费者预览版系统上. 解决方法: 1.使用热键组合"WIN+X"调出快捷菜单,选择"控制面板"并进入,在控制面板的系统和安全中选择"Windows 更新"下的"安装可选更新",如下图所示: 2.点击进入以后,会显示如下图所示: 3.进入

Win7系统IE9浏览器出现报错停止工作怎么解决

  Win7系统IE9浏览器出现报错停止工作怎么解决         首先要排除出是否加载项导致的问题,我们可以先以无加载项模式启动IE浏览器,若在该模式下IE使用正常,则可以确认浏览器崩溃为加载项所致,接下来只需要找出问题加载项.下面小编就向大家分享一个如何排除问题加载项的方法,以后便可轻松解决IE崩溃的问题. 具体解决方法如下: 1.使用IE浏览器登陆邮箱的过程中出现报错了,当时弹出的报错如下截图; 2.去事件查看器内寻找是否有重要线索,IE浏览器作为Windows不可分割一部分,IE出错在