Are you using a DataAdapter? If so, you should check the return
value from the Fill method when you use it to populate your
dataset. Once you have used Fill, a new Table object will have
been added to the DataSet Tables collection. The Table object
has both a Rows and a Columns collection. As each Row object
is selected, the Columns objects have the values for that Row.
This is all just theory to me that I got from MSDN and an ADO.Net
reference. However, it makes sense to me, and I expect it works
pretty much as described.