我执行一个操作:先用Connection对象创建事务并开启事务,然后在查询时就报错误说Connection对象在挂起的事务中,然后说Command对象的事务没有初始化 。不知道怎么回事 请教了谢谢

解决方案 »

  1.   

    这是开事务的
      
               connObj.Open();
               transaction = connObj.BeginTransaction();
               comdObj.Connection = connObj;
               comdObj.Transaction = transaction;下面是查询的
       dp = new OracleDataAdapter(sql, connObj);
               dp.Fill(dateset);
               return dateset;
    然后我在代码中先开了事务 然后在查询就出错了
      

  2.   

       private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                    cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;
                if (cmdParms != null)
                {
                    foreach (OracleParameter parameter in cmdParms)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
      

  3.   

    OracleConnection myConnection = new OracleConnection(myConnString);
    myConnection.Open();
    OracleCommand myCommand = myConnection.CreateCommand();
    OracleTransaction myTrans;
    myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
    myCommand.Transaction = myTrans;try
    {
    myCommand.CommandText = "";
    myCommand.ExecuteNonQuery();
    myTrans.Commit();
    }
    catch(Exception e)
    {
    myTrans.Rollback();
    }
    finally
    {
    myConnection.Close();
    }
    }
      

  4.   

    wuyq11 你好 你的两段代码都不是执行查询的啊, 我是在事务开启的状态下进行查询操作出错的,能不能帮我想想办法呢 谢谢
      

  5.   

    这是开事务的 
      
              connObj.Open(); 
              transaction = connObj.BeginTransaction(); 
              comdObj.Connection = connObj; 
              comdObj.Transaction = transaction; 下面是查询的 
      dp = new OracleDataAdapter(sql, connObj); 
              dp.Fill(dateset); 
              return dateset; 既然使用了事务,你在执行完代码块时应该使用Commit提交
    transaction .Commit()在外层加一个
    try
    {
    }
    catch(Exception)
    {
    transaction ,rollback();
    }
    如果中间出现异常就回滚,不过事务针对查询好像用得比较少吧 ,基本上都是控制数据库数据操作