Um...look at your code:
while (SDR.Read())
{
...
SDR.Close();
SC.Close();
}
So when the loop gets to the bottom, it'll go back to the
while
test and try to read a row from the now closed reader. (But you don't show the reader being opened in the first place)
Move the two Close calls outside the loop.
Better use a
using
block to construct the Connection, Command and Reader objects, and they will automatically be closed and Disposed when they go out of scope.