SQL事件处理 指示“已有打开的与此命令相关联的 DataReader,必须首先将它关闭”。

冬夜 2012-05-19 02:00:54
下面是源代码,各位给看看要怎么改 我如果直接在中间加个加个conn.Close(); 也会提示出错。整个事务的功能是先将数据读出,修改后写回数据库。谢谢

conn.Open();//采用事件处理时行数据提交
SqlCommand cmd = new SqlCommand();
SqlTransaction sqltran = conn.BeginTransaction();
cmd.Connection = conn;
cmd.Transaction = sqltran;

cmd.CommandText = "SELECT [" + outdept + "],[" + outdept1 + "],[" + indept + "] FROM [Order] where [ClientOrder]='" +lvw_list.Items[1].SubItems[2].Text + "'";
SqlDataReader getnumber = cmd.ExecuteReader();
getnumber.Read();
outi = Convert.ToInt32(getnumber[0].ToString()) -Convert.ToInt32( lvw_list.Items[0].SubItems[4].Text);
outo = Convert.ToInt32(getnumber[1].ToString()) +Convert.ToInt32( lvw_list.Items[0].SubItems[4].Text);
ini = Convert.ToInt32(getnumber[2].ToString()) + Convert.ToInt32(lvw_list.Items[0].SubItems[4].Text);
cmd.CommandText = "UPDATE [Order] SET [" + outdept + "]='" + outi + "',[" + outdept1 + "]='" + outo + "',[" + indept + "]='" + ini + "' WHERE [ClientOrder]='" + lvw_list.Items[1].SubItems[2].Text + "' ";
cmd.ExecuteNonQuery();
sqltran.Commit();
lvw_list.Items.RemoveAt(1);
conn.Close();
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
冬夜 2012-05-19
  • 打赏
  • 举报
回复
搞定了 谢谢
theillusion 2012-05-19
  • 打赏
  • 举报
回复
getnumber.Close();
cmd.CommandText = "UPDATE [Order] SET

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧