Zauważyłem, że otwierasz połączenia, ale nie zamykasz ich, kiedy z nimi skończysz. Wolę podejście polegające na otwieraniu połączeń, gdy są potrzebne, niż ewentualnie otwieraniu ich, jeśli nie są jeszcze otwarte. Mogą być nieświeże.
Buforuj ciąg połączenia ale nie samo połączenie.
public static string ConnectionString {get;set;}
public static bool InsertRecord(sql)
{
bool success = false;
using (var con = new Connection(ConnectionString)){
var command = new SqlCommand(sql,con);
success = (command.ExecuteNonQuery() > 0);
}
return success;
}
Zasoby powinny być uwalniane, gdy nie są już potrzebne.