So, your problem is:
reader = cmd.ExecuteReader();
reader1 = cmd.ExecuteReader();
The exception tells you that this is a problem. There is no reason to do this.
Also, you're leaving a whole bunch of undisposed handles floating around when you do this. The rule of thumb is: If something implements IDisposable, dispose of it when you're done with it.
using(var reader = cmd.ExecuteReader())
{
...
}