[英]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.