需要循环得到用户名
while(reader.Read())
{
string WBN=reader["WasteBookNo"].ToString();
然后执行存储过程和其他代码,但是执行存储过程myCommand.ExecuteNonQuery();的时候提示出错:已有打开的与此连接相关联的 DataReader,必须首先将它关闭。

我该怎么解决,能不能先把用户名读到datatable里,然后循环查询datatable 怎么查呢?

解决方案 »

  1.   

    SqlConnection myConn = new SqlConnection("");
    SqlDataAdater da = new SqlDataAdapter("",myConn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    for(int i = 0;i< dt.Rows.Count;i++)
    {
    string WBN = dt.Rows[i]["WasteBookNo"].ToString();
    //__-----------
    }
      

  2.   

    DataReader,必须首先将它关闭,这个提示很明显
      

  3.   

    DataReader必须close
    用using ()
    {
    }
    也不行
    改为
    while(reader.Read())
    {
    string WBN=reader["WasteBookNo"].ToString();

    reader.close();
      

  4.   

    不好意思,看错了.用DataReader的一直连着数据库,要关闭了才能进行其他操作,用老代的吧
      

  5.   

    DataReader会一直占用联接直至它关闭,所以应该把数据一次性取出来关闭它,或另建一联接。
      

  6.   

    太菜了吧这个问题要解决
    就改DataReader为DataSet
    int count=myDataSet.Tables["--"].Rows.Count;
    for(int i=0;i<count;i++)
    {
    string WBN=myDataSet.Tables.Rows[i]["WasteBookNo"].ToString();/////myCommand.ExecuteNonQuery();}