I was getting this error when accessing the DataTableReaedere records (Read about it http://www.dotnetfunda.com/articles/article987-working-with-datatablereader-class-.aspx
).DataTableReader is invalid for current DataTable
I noticed that because I was not accessing the records under the loop of while(reader.Read()) I was getting this error. If only one record exists, you can call reader.Read() and then access the record without putting it inside the loop.
Hope this helps someone.