A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lx19921105 中级黑马   /  2014-3-28 19:26  /  1020 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C# +SqlServer2008   做的一个系统.老是提示 ( 已有打开的与此命令想关联的DataReader,必须首先将它关闭) 我试着在不同地方加reader.close()还是不行. 但是以前我用C#+Oracle做的时候就没这个问题. cmd.ExecuteNonQuery();出错的这局
int x, nx,zx;
            string sss;  
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "server=(local);database=mystudent1;integrated security=SSPI ";
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
cmd.CommandText = string.Format("select balance from cards111 where id='{0}'", uid);
                SqlDataReader reader;
                reader = cmd.ExecuteReader();
if (reader.Read())
                {
                    x = Convert.ToInt32(reader["balance"].ToString());
                    zx = Convert.ToInt32(textBox1.Text);
                    nx = x + zx;
                    sss=nx.ToString();
                    cmd.CommandText = string.Format("update cards111 set balance='{0}' where id='{1}'", sss, uid);
                    object obj1 = cmd.ExecuteNonQuery();
                    if (obj1 == null)
                    {
                        MessageBox.Show("error");
                    }
                    else
                    {
                        cmd.CommandText = string.Format("insert into records111 values('{0}','{1}','{2}',to_date('{3}','yyyy-mm-dd hh24:mi:ss'))", uid, "存款", zx, DateTime.Now.ToString());
                        object obj = cmd.ExecuteNonQuery();
                        if (obj == null)
                        {
                            MessageBox.Show("error2");
                        }
                        else
                        {
                            MessageBox.Show("存款成功");
                            cmd.CommandText = string.Format("commit");
                            textBox1.Clear();
                        }
                    }
                  
           
                }
                else
                {
                    MessageBox.Show("error");
                }
                reader.Close();
               
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
            finally
            {
                conn.Dispose();
                cmd.Dispose();
               
            }

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

1 个回复

倒序浏览
你用using试试,我把你代码改了一下,没调试
  1. string dbStr = "server=(local);database=mystudent1;integrated security=SSPI ";
  2.             using (SqlConnection conn = new SqlConnection(dbStr))
  3.             {
  4.                 conn.Open();

  5.                 using (SqlCommand cmd = conn.CreateCommand())
  6.                 {
  7.                     cmd.CommandText = string.Format("select balance from cards111 where id='{0}'", uid);

  8.                     using (SqlDataReader reader = cmd.ExecuteReader())
  9.                     {
  10.                         if (reader.Read())
  11.                         {
  12.                             x = Convert.ToInt32(reader["balance"].ToString());
  13.                             zx = Convert.ToInt32(textBox1.Text);
  14.                             nx = x + zx;
  15.                             sss = nx.ToString();
  16.                             cmd.CommandText = string.Format("update cards111 set balance='{0}' where id='{1}'", sss, uid);
  17.                             object obj1 = cmd.ExecuteNonQuery();
  18.                             if (obj1 == null)
  19.                             {
  20.                                 MessageBox.Show("error");
  21.                             }
  22.                             else
  23.                             {
  24.                                 cmd.CommandText = string.Format("insert into records111 values('{0}','{1}','{2}',to_date('{3}','yyyy-mm-dd hh24:mi:ss'))", uid, "存款", zx, DateTime.Now.ToString());
  25.                                 object obj = cmd.ExecuteNonQuery();
  26.                                 if (obj == null)
  27.                                 {
  28.                                     MessageBox.Show("error2");
  29.                                 }
  30.                                 else
  31.                                 {
  32.                                     MessageBox.Show("存款成功");
  33.                                     cmd.CommandText = string.Format("commit");
  34.                                     textBox1.Clear();
  35.                                 }
  36.                             }
  37.                         }
  38.                         else
  39.                         {
  40.                             MessageBox.Show("error");
  41.                         }
  42.                     }
  43.                 }
  44.             }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马