The ChangeDatabase method of the ADO.NET Connection object requires an open connection to execute correctly. Even if the connection is open, you can still have an InvalidOperationException when invoking this method; this happens when you are reading data from the connection by means of a DataReader object, because the DataReader uses the connection in exclusive mode and prevents from issuing any other command on that connection, including a ChangeDatabase method.
To resolve this problem, just ensure that you close the DataReader before calling the ChangeDatabase method.