从数据库里读取了10条记录,用
foreach (System.Data.Common.DbDataRecord s in reader)
            {
                //System.Data.Common.DbDataRecord
                rows.Add(s[0].ToString());
            }
显示出来的却只有9条记录,其中,第一条记录没有显示,但是可以通过
reader[0].ToString()把没有显示的第一条记录显示出来
这里有点疑惑,用foreach读取其他数据集合的集合的就没有这个问题。
在线求解...

解决方案 »

  1.   

    SqlDataReader sr;
    ...
    while(sr.Read())
    {
    ...
    }
      

  2.   

    while (myReader.Read())SqlDataReader 的默认位置在第一条记录前面。因此,必须调用 Read 来开始访问任何数据。
      

  3.   

    是在reader.Read()之后foreach的,没能读出第一条数据
    可是通过reader[0]就能读出数据
      

  4.   

    显然,楼主在这个foreach之前很可能是调用了一次reader.Read()方法,而没调用一次此方法,reader就往下跳一行
      

  5.   

    因此,两种写法:
    reader = myDataCommand.ExcuteReader();
    while (reader.Read())
    {
            rows.Add(s[0].ToString());
     }或
    reader = myDataCommand.ExcuteReader();
    if (reader.HasRows)
    {
            foreach (System.Data.Common.DbDataRecord s in reader)
                rows.Add(s[0].ToString());
     }
      

  6.   

    while(reader.Reader())
    {
                rows.Add(reader[0].ToString(), reader[1].ToString());
                foreach (System.Data.Common.DbDataRecord s in reader)
                {
                    //System.Data.Common.DbDataRecord
                    label2.Text += s[0].ToString() + " " + s[1].ToString() + "\n";
                    rows.Add(s[0].ToString(), s[1].ToString());
                    i++;
                }
    }
    显示正确数据
    不要rows.Add(reader[0].ToString(), reader[1].ToString());就少了第一条  不解...
      

  7.   

    如Eddie005(♂) №.零零伍 (♂) 所说,每reader.Reader()一次,就往下跳一次
      

  8.   

    if(reader.hashRow)
    {
        foreach()
    }