Noto que abres conexiones, pero no las cierras cuando terminas con ellas. Prefiero el enfoque de abrir conexiones cuando se necesitan, en lugar de posiblemente abrirlas si aún no están abiertas. Pueden estar obsoletos.
Guarda en caché la cadena de conexión pero no la conexión en sí.
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;
}
Los recursos deben liberarse cuando ya no sean necesarios.