DataReader has rows and data, trying to read from it says “no data is present”

前端 未结 2 1469
你的背包
你的背包 2021-01-19 16:30

I haven\'t used DataReaders in ages (I prefer to use an ORM) but I\'m forced to at work. I pull back the rows, and check that HasRows is true; debugging at thi

相关标签:
2条回答
  • If you want to put the data into a file, start by loading a DataTable instead of using a DataReader. With the DataReader, as has been mentioned in the comments, you might want to iterate through the result set with a while loop

    while (reader.Read())
    {
    
    }
    

    The loop reads one row at a time and quits when all of the rows have been read. Once you move to the next row, the previous rows are no longer available unless you have put them into some other structure, like a list or DataTable.

    But you can use a DataAdapater to fill a DataTable so there might not be a reason to use a DataReader. Then you can write to a file from the DataTable.

    In any event, I don't see how this line could work.

    FileName = Convert.ToString(reader["FileName"])
    

    I can post additional code for either approach if you like.
    HTH Harvey Sather

    0 讨论(0)
  • Just to clarify the answer, it was using the debugger since expanding the results view calls Read() and therefore it moves past the row. As Marc Gravell said in a comment: Debugger considered harmful

    0 讨论(0)
提交回复
热议问题