The clue is in the error message:
there is already an open datareader associated with this command which must be closed.
You create a reader, and do not try to dispose of it before you reuse the same connection for the insert command. This is not allowed:
http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.80).aspx[
^]
"You should always call the Close method when you have finished using the DataReader object.
If your Command contains output parameters or return values, they will not be available until the DataReader is closed.
Note that while a DataReader is open, the Connection is in use exclusively by that DataReader. You cannot execute any commands for the Connection, including creating another DataReader, until the original DataReader is closed."
So at the top of your else condition, add this:
reader.Close();