簡體   English   中英

系統無效操作異常

[英]system.invalidoperationexception

我正在嘗試運行此代碼

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:如果此事務范圍內有任何打開的游標,則不能提交事務。 在提交更改之前,請確保所有數據讀取器/結果集都已明確關閉。

我是交易新手,無法找到有關打開的游標的任何有價值的解決方案。 代碼是否有問題,或者我必須顯式關閉數據讀取器,如果是,請告訴我如何?

只需調用sdr.Close(); 在while循環之后,因為這就是錯誤所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM