remoto generar ejemplo crear conexiones conexion clase cerrar cadena c# .net sql data-binding sqlconnection

generar - ejemplo conexion sql c#



¿Cuándo debería abrir y cerrar una conexión a SQL Server? (6)

Como SqlConnection tiene un grupo de conexiones cuando llamas a Open () y Close (), en realidad no estás abriendo y cerrando la conexión física al servidor. Simplemente está agregando / eliminando la conexión de un grupo de conexiones disponibles. Por esta razón, es una buena y mejor práctica abrir la conexión lo más tarde posible y cerrar la conexión tan pronto como sea posible después de ejecutar el comando.

Tengo una clase estática simple con algunos métodos. Cada uno de esos métodos abre una SqlConnection, consulta la base de datos y cierra la conexión. De esta manera, estoy seguro de que siempre cierro la conexión a la base de datos, pero, por otro lado, no me gusta abrir y cerrar siempre la conexión. A continuación se muestra un ejemplo de cómo se ven mis métodos.

public static void AddSomething(string something) { using (SqlConnection connection = new SqlConnection("...")) { connection.Open(); // ... connection.Close(); } }

Teniendo en cuenta que los métodos están dentro de una clase estática, ¿debería tener un miembro estático que contenga una sola SqlConnection? ¿Cómo y cuándo debería dejarlo? ¿Cuáles son las mejores prácticas?


En el ejemplo del código, no es necesario llamar al método close () en el objeto de conexión, ya que se manejará automáticamente debido al código que reside dentro de un bloque de uso.


Estás haciendo las mejores prácticas. Solo ábralo justo antes de que vaya a consultarlo, y ciérrelo tan pronto como pueda. Este tipo de cosas puede parecer un desperdicio al principio, pero en realidad hace que su aplicación sea más escalable a largo plazo.


La mayoría de los programadores creen en abrir tarde y cerrar temprano. Esto es solo un problema si la latencia para abrir y cerrar la conexión cada vez hace que la aplicación se ralentice.

En su caso con una clase estática, probablemente sea mejor abrir y cerrar la conexión cada vez.


No, no mantengas una SqlConnection estática a menos que tengas que hacerlo. Enhebrarlo sería una preocupación, pero lo más importante, por lo general, simplemente no es necesario. Con su código como se presenta, la agrupación de conexiones internas significa que la mayoría de las veces obtendrá la misma conexión subyacente en llamadas sucesivas de todos modos (siempre que use la misma cadena de conexión). Deje que el pooler haga su trabajo; deja el código solo

Esto también evita los problemas de lo que sucede cuando comienzas a tener dos hilos ... ahora cada uno puede trabajar en su propia conexión; con estática (suponiendo que no use [ThreadStatic] ) tendría que sincronizar, presentando retrasos. Por no mencionar la reentrada (es decir, un hilo único que intenta usar la misma conexión dos veces al mismo tiempo). Sip; deja el código solo Está bien ahora, y casi cualquier cambio que hagas no lo hará bien.


Nunca confíe en la conexión para cerrarse. Si no se cierra de forma explícita, dará lugar a problemas de rendimiento. Nos sucedió en nuestro proyecto. Sí, soy consciente de que las conexiones son administradas por un grupo de conexiones, pero aún deben cerrarse y devolverse al grupo.