Cerrar un hilo contra una base de datos MySQL en C #
-
20-09-2019 - |
Pregunta
¿Cuál es la forma correcta de cerrar una banda de rodadura después de ejecutar una consulta en una base de datos MySQL desde un formulario Windows en C #?
Es un simple cierre abierto lo suficiente como esto?
conn.Open();
//querycode
conn.Close():
Solución
Trate de usar:
using(MySqlConnection conn = new MySqlConnection(connString))
{
conn.Open();
} // conn is automatically closed and disposed at the end of the using block
Otros consejos
que está bien la forma en que lo está haciendo, también se puede envolver objeto de conexión en el bloque using
como esto:
using (var con = new MySqlConnection(/*connection string*/))
{
con.Open();
//do stuff
// con.Close(); //don't need this it will be closed automatically*
}
( ver )
No, el código en su pregunta no es lo suficientemente bueno. Si la consulta se produce una excepción que no se cerrará () de una manera oportuna y se deja colgando hasta que el recolector de basura nota.
Es necesario incluir al objeto en un bloque using
como se muestra por otros o en un mínimo encerrar en una estructura de fin / intentarlo.
Las clases que utilizan los recursos que necesita para limpiar después generalmente implementar el IDisposable interfaz. Esto significa que proporciona una función llamada Dispose () que se puede utilizar para liberar recursos.
Para los objetos desechables, se puede utilizar el usando declaración:
using ( SomeDisposableClass c = new SomeDisposableClass() ) {
// ... your code here
} // c.Dispose() automatically called here, freeing up resources
Si la clase está codificado correctamente, debe liberar los recursos - ya sea una conexión de base de datos, un identificador de archivo abierto, etc - en su función Dispose ().
Esto significa que el MySQL probablemente se desconecta de la base de datos en Dispose (), por lo que probablemente no es necesario llamar explícitamente c.close () -. Pero siempre verifique la documentación para asegurarse