Dim dr As SqlDataReader
        stra = "SELECT * from wlxx"
        sqlcmd = New SqlCommand(stra, CONN)
        CONN.Open()
        dr = sqlcmd.ExecuteReader
                I = 0
        While dr.Read
            strb = "insert into wlxx1 values('" & dr(0) & "','" & dr(1) & "','" & dr(2) & "','" & dr(3) & "','" & dr(4) & "'"
            sqlcm = New SqlCommand(strb, CONN)            sqlcm.ExecuteNonQuery()            I = I + 1
            Label1.Text = "有" & I & "条数据复制"
        End While        CONN.Close()提示“已有打开的与此命令相关联的DATAREADER” 错误,是那错误了,晕

解决方案 »

  1.   

    http://topic.csdn.net/u/20090420/15/c1cc7d3e-31b9-4670-a21d-caf61398e9d3.html
    http://www.cnblogs.com/liaojunbo/archive/2008/04/26/1172348.html
      

  2.   

    检查是否有地方用到了datareader没有关闭的
      

  3.   

    SqlDataReader 要先关闭,再执行ExecuteNonQuery操作
    using (SqlConnection cn = new SqlConnection(“”))
      {
      SqlCommand cmd1 = new SqlCommand("", cn);
      cn.Open();
      using (SqlDataReader dr1 = cmd1.ExecuteReader())
      {
      while (dr1.Read())
      {
      string sql= "";
      SqlConnection conn2 = new SqlConnection("");
      SqlCommand cmd2 = new SqlCommand(sql, conn2 );
      cmd2.ExecuteNonQuery();
      }
      }  }
      

  4.   

    这个错误肯定是你上个读取的时候没有关闭。你可以到上个方法找到。。close。也可以在执行前先close 再open。再读取数据。
      

  5.   

     搞定,要加个连接数据库,ExecuteNonQuery后会产生一个隐形SqlDataReader,所以要加个连接再ExecuteNonQuery