【问题标题】:system.invalidoperationexceptionsystem.invalidoperationexception
【发布时间】:2013-03-23 11:59:44
【问题描述】:

我正在尝试运行此代码

public Exception SetData(string Data , long NoOfColumnsAllowed)
    {
        try
        {
            con = new SqlCeConnection(conectionstring);
            con.Open();
            transaction = con.BeginTransaction();
            com = new SqlCeCommand();
            com.Transaction = transaction;
            com.CommandText = "Select  count(*) from [Copy]";
            com.Connection = con;
            sdr = com.ExecuteReader();
            while (sdr.Read())
            {
                noOfColumns = sdr.GetInt32(0);
            }


            if (noOfColumns > NoOfColumnsAllowed)
            {
                long NoOfColumsToBeDeleted = noOfColumns - NoOfColumnsAllowed;
                com.CommandText = "delete from [Copy] where Sno<=@sno";
                com.Parameters.AddWithValue("@sno", NoOfColumsToBeDeleted);
                com.ExecuteNonQuery();
            }

            com.CommandText = "Insert into [Copy] (Data) values (@data)";
            com.Parameters.AddWithValue("@data", Data);
            com.ExecuteNonQuery();
            transaction.Commit();
            con.Close();

            return null;
        }
        catch (Exception ex)
        {
            try
            {
                transaction.Rollback();
            }
            catch (Exception)
            {

            }
            con.Close();
            return ex;
        }


    }

异常发生 -

system.invalidoperationexception : 事务不能 如果在 this 范围内有任何打开的游标,则提交 交易 。确保所有数据读取器/结果集 在提交更改之前明确关闭。

我是事务新手,无法找到有关打开光标的任何有价值的解决方案。代码有问题吗,或者我必须明确关闭数据阅读器,如果是,请告诉我怎么做?

【问题讨论】:

    标签: c# transactions invalidoperationexception sqlcedatareader


    【解决方案1】:

    只需调用 sdr.Close();就在 while 循环之后,因为这就是抱怨的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多