读书人

SQL事件处理 指示“已有打开的与此命令

发布时间: 2012-05-20 16:03:12 作者: rapoo

SQL事件处理 指示“已有打开的与此命令相关联的 DataReader,必须首先将它关闭”。
下面是源代码,各位给看看要怎么改 我如果直接在中间加个加个conn.Close(); 也会提示出错。整个事务的功能是先将数据读出,修改后写回数据库。谢谢

C# code
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();


[解决办法]
getnumber.Close();
cmd.CommandText = "UPDATE [Order] SET

读书人网 >C#

热点推荐