错误提示:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。    public void JoinKf()
    {
        int id = Convert.ToInt32(Request.QueryString["id"]);
        //读取数据库连接字符串
        string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
        //创建数据库连接
        SqlConnection myconn = new SqlConnection(settings);
        myconn.Open();
        //创建查询语句
        string sql = "select * from Student_xx As a Left Join Student_xj As b on a.StuId = b.StuId Where a.StuId=" + id;
        //创建数据库命令
        SqlCommand mycmd = new SqlCommand(sql, myconn);
        SqlDataReader result = mycmd.ExecuteReader();
        if (result.Read())
        {
            string pczt = "未赔偿";
            string sql1 = "insert into KouFei(StuId, Xh, StuName, Sex, Xs, Zy, Nj, ClassName, KfJe, KfYy, KfR, KfBm, KfTime, PcZt) Values(" + id + "," + "'" + result["Xh"].ToString() + "'," + "'" + result["StuName"].ToString() + "'," + "'" + result["Sex"] + "'," + "'" + result["Xs"].ToString() + "'," + "'" + result["Zy"].ToString() + "'," + "'" + result["Nj"].ToString() + "'," + "'" + result["ClassName"].ToString() + "'," + "'" + tbx_kfje.Text.ToString() + "'," + "'" + tbx_kfyy.Text.ToString() + "'," + "'" + Session["UserName"].ToString() + "'," + "'" + Session["UserBm"].ToString() + "'," + "'" + DateTime.Now + "'," + "'" + pczt + "')";
            //创建数据库命令
            SqlCommand mycmd1 = new SqlCommand(sql1, myconn);
            mycmd1.ExecuteNonQuery();            
        }
        myconn.Close();
    }

解决方案 »

  1.   

    、你  Reader的 conn都没有close
    先close
    在重新 conn.open()
      

  2.   

    不对劲 sql command没执行就要read 这样不行吧
      

  3.   

    这样用reader不行,
    可以先返回DataSet再循环处理。
      

  4.   

    ExecuteNonQuery() 内部会开一个DataReader,因此要先把别的DataReader关闭掉
      

  5.   

    在前面加一个result.Close();后我的insert into 里面的 result[]还管用吗?
    我想实现的就是从表中提取的数据添加到另一个表中
      

  6.   

    mycmd1
    不能使用myconn连接了
    重新定义一个吧。。
      

  7.   

    在前面加一个result.Close();后我的insert into 里面的 result[]还管用吗?
    我想实现的就是从表中提取的数据添加到另一个表中
      

  8.   

    if(result.read())
    {
    .....
    }
    这里把result关闭
    result.close();
      

  9.   

    在前面加一个
    result.Close();
    myconn.Close(); 建议你加上try{..}catch(..)防止意外不能关闭连接的情况
      

  10.   

    根据ASP.NET揭秘的揭发,要同时执行多条SQL语句,可以在连接字符串里加上:
    MultipleActiveResultSets=true;