string ID = TextBox1.Text;
        string D1 = DropDownList1.SelectedItem.Value.ToString();
        string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["Photo-图片处理"].ToString();
        SqlConnection conn = new SqlConnection(strconn);
        conn.Open();
        string sqlstr = "select sID,sName,sPwd,sSex,sBirth,sTel,sEmail,sAddress from Student where sID='" + ID + "'";
        //SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
        SqlCommand com = new SqlCommand(sqlstr, conn);
        SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
       
        while (dr.Read())
        {
            if (com.ExecuteReader() == null)
            {
               //conn.Close();
                string scriptString = "alert('" + "没有该信息!" + "');";
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "warning", scriptString, true);
            }
           else
            {
                //DataRow row = dt.Rows[0];
                TextBox2.Text = dr["sID"].ToString();
                TextBox3.Text = dr["sName"].ToString();
                TextBox4.Text = dr["sPwd"].ToString();
                D1 = dr["sSex"].ToString();
                TextBox5.Text = dr["sBirth"].ToString();
                TextBox6.Text = dr["sTel"].ToString();
                TextBox7.Text =dr["sEmail"].ToString();
                TextBox8.Text = dr["sAddress"].ToString();
            }
        }
 在这里if (com.ExecuteReader() == null)一直提示   已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
这个错误    哪位高手帮帮忙啊

解决方案 »

  1.   

    都知道那个地方错误了,调试跟踪下看看,很容易就知道为什NULL
      

  2.   

    首先不知道你的com.ExecuteReader()内部是怎么处理的,
    看你的错误,应该是打开了DataReader以后没有关闭,也就是说com.ExecuteReader()会打开某个DataReader,而你放在循环中,每次循环又不去关掉DataReader,下一次循环的时候就重复打开SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
    com.ExecuteReader() 和 dr 有什么关系?