Todos los ejemplos anteriores muestran la misma debilidad. No utiliza la instrucción de uso que asegurará el correcto cierre y eliminación de la conexión y demás objetos desechables. Si una o más de sus declaraciones arrojan una excepción, el código que cierra la conexión no se ejecuta y podría terminar con el error de demasiadas conexiones
Por ejemplo
string commandLine = "SELECT * FROM Table WHERE active=1";
commandLine = commandLine.Remove(commandLine.Length - 3);
using(MySqlConnection connect = new MySqlConnection(connectionStringMySql))
using(MySqlCommand cmd = new MySqlCommand(commandLine, connect))
{
connect.Open();
using(MySqlDataReader msdr = cmd.ExecuteReader())
{
while (msdr.Read())
{
//Read data
}
}
} // Here the connection will be closed and disposed. (and the command also)