You are actually open the connection twice ,but closing once - the second one will be closed only after your application exits...
First:
cat.Create(Connection_String);
Second:
connection.Open(Connection_String, null, null, 0);
Looking at your code, the first can be removed and you still get the same...