Oracle数据使用事务异常—Command 的 Transaction 属性尚未初始化异常
来源:互联网 发布:淘宝怎么看产品的排名 编辑:程序博客网 时间:2024/05/16 11:30
如果提示以下信息“System.InvalidOperationException: 如果分配给 Command 的 Connection 对象位于挂起的本地事务中,Execute 将需要 Command 对象具有 Transaction 对象。Command 的 Transaction 属性尚未初始化。” 基本情况是有同时使用 OracleConnection 和 OracleCommand 引起的。
原因:在于在 OracleConnection 中声明了事务,但是 OracleCommand 使用 OracleConnection 时没有重新做 事务声明引起的。
解决方法:使用 OracleConnection 时借用 OracleConnection的事务声明即可。
using (OracleConnection oraConn = new OracleConnection(cdt.DBOperators[0].ConnectString)) { oraConn.Open(); OracleTransaction transaction=oraConn.BeginTransaction(); try { foreach (DataTable dt in dts) { if (dt.TableName.Equals(dataOut)) { //删除相关表的数据 this.DisposeDeleteData(dt, oraConn, transaction); } else { //需要更新的数据 this.UpdateDataTable(dt, oraConn, transaction); } } transaction.Commit(); return true; } catch(Exception ex) { transaction.Rollback(); throw ex; } }
/// <summary> /// 读取Dataout零时表数据,删除已经被删除的旧文件 /// </summary> /// <param name="dt"></param> /// <param name="oraConn"></param> private void DisposeDeleteData(DataTable dt, OracleConnection oraConn, OracleTransaction transaction) { string tableName = string.Empty; string tableKeys = string.Empty; foreach (DataRow dr in dt.Rows) { if (!tableName.Equals(dt.TableName)) { tableName = dt.TableName; OracleCommand getKeysCmd = new OracleCommand(fGetTableKeys, oraConn); //在此处添加事务处理声明 getKeysCmd.Transaction = transaction; getKeysCmd.CommandType = CommandType.StoredProcedure; getKeysCmd.Parameters.Add(new OracleParameter("varAlias", tableName)); getKeysCmd.Parameters.Add(new OracleParameter("varTableName", tableName)); OracleParameter outPa = new OracleParameter("varKeys", OracleType.VarChar, 120); outPa.Direction = ParameterDirection.ReturnValue; getKeysCmd.Parameters.Add(outPa); getKeysCmd.ExecuteNonQuery(); tableKeys = outPa.Value.ToString(); } OracleCommand cmd = new OracleCommand(string.Format("delete from {0} where {1}='{2}'", tableName, tableKeys, dr["PrimKey"].ToString()), oraConn); cmd.ExecuteNonQuery(); } }
- Oracle数据使用事务异常—Command 的 Transaction 属性尚未初始化异常
- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
- 如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化
- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
- 20130822-STM8L101F3P6的PD0使用异常,尚未解决~!
- ConnectionString 属性尚未初始化
- ConnectionString属性尚未初始化
- CommandText 属性尚未初始化
- Oracle——事务(Transaction)
- spring中异常的使用--事务
- spring事务(Transaction )报 marked as rollback-only异常的原因及解决方法
- Spring注解声明的事务@Transaction出现异常后没有回滚
- Oracle自定义异常的使用
- 事务的异常处理
- 使用子事务(saveponit)时,当子事务抛出异常后,此异常处理掉不继续往外抛, Transaction has been rolled back because it has been marke
- oracle数据异常处理
- ExecuteNonQuery: Connection 属性尚未初始化
- ExecuteReader: Connection 属性尚未初始化。
- ASP.NET配置文件Web.config
- Android SDK tools adb.exe下文件丢失问题
- 深入理解HTTP协议(转)
- 双11活动,记下先
- 显示圆角图片
- Oracle数据使用事务异常—Command 的 Transaction 属性尚未初始化异常
- 基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
- Git fetch和git pull的区别
- 超NB的js图片预览效果代码-小图热点 大图清醒显示
- 虚函数,纯虚函数和抽象类
- svn在ubuntu下Password for '(null)'错误处理
- mongodb权威指南笔记
- 今天美国大选谁会赢?奥巴马还是罗姆尼?
- Orchard基本概念快速理解