En el post anterior, explicábamos acerca los partes que lleva una cadena de conexión, tanto cuando es autentificada por Windows, así como cuando es autentificada por rol SQL Server.
Bien, pues en este post, nos enfocaremos a ver una forma mucho más eficiente de conectarnos a nuestra base de datos.
En primer lugar, si recordamos el código del post anterior, tenía algo como esto:
1: try
2: {
3: sqlconnection.Open();
4: Console.WriteLine("Conexión Abierta Satisfactoriamente!");
5: }
6: catch (Exception ex)
7: {
8: Console.WriteLine("Falló al tratarse de conectar a Base de Datos!");
9: }
10: finally
11: {
12: sqlconnection.Close();
13: Console.ReadLine();
14: }
Se podría decir, que este código está bien, sin embargo, existe un problema debido a que no se liberan los recursos una vez cerrada la conexión. Esto mismo hubiera pasado si hubiésemos tenido un sqlcommand.
Para arreglar esto, lo que debemos hacer, es poner el código dentro de un bloque a través de un using, el cual nos permitirá liberar de forma automática los recursos.
El using, es usado de la siguiente manera:
1: using (SqlConnection sqlconnection =
2: new SqlConnection(miCadenaConexion))
3: {
4: sqlconnection.Open();
5: }
como vez, en esta sección lo estamos usando como un bloque, define un ámbito donde al final, el objeto automáticamente se destruirá, por eso no es necesario ni siquiera cerrar la conexión. A este código se le puede implementar un try – catch para probar capturar excepciones, pero para comprobar, y veas que no te miento, usaré el siguiente código para revisar el estado de nuestra conexión a la base de datos:
1: SqlConnection sqlconnection;
2:
3: using (sqlconnection = new SqlConnection(miCadenaConexion))
4: {
5: sqlconnection.Open();
6: if (sqlconnection.State == System.Data.ConnectionState.Open)
7: {
8: Console.WriteLine("Conexión abierta");
9: Console.Read();
10: }
11: }
12:
13: if (sqlconnection.State == System.Data.ConnectionState.Open)
14: {
15: Console.WriteLine("La conexión sigue abierta!");
16: Console.Read();
17: }
18: else
19: {
20: Console.WriteLine("La conexión se ha cerrado satisfactoriamente! :)");
21: Console.Read();
22: }
Como vez, lo que hacemos es primero comprobar el estado de la conexión dentro del primer if, y posteriormente lo volvemos a comprobar una vez saliéndonos del bloque using, con lo cual obtenemos:
Es una práctica recomendada, y que mejora mucho la forma de programar 🙂
Salu2
Héctor Uriel Pérez Rojas
hola amigo he visto tu pagina web y esta que mola ose bacan,
mira por favor si tienes algun ejemplo de programacion c#.net pero echo en tres capas por favor te lo agradeceria un mundo
saludos desde Madrid
Gracias por este aporte, me resulto muy útil, dado que justo estaba definiendo esta funcionalidad.
Saludos.
Gracias por los comentarios jeje, Luis, a tu alcance tienes una excelente aplicación funcional, y sobre todo, de libre descarga, la encuentras en http://www.desarrollaconmsdn.com
Está hecha con lo último de tecnologías .net.
y Ramiro, me da gusto que te haya servido 🙂
Salu2
gracias por tu blog y pór los conocimientos k dejas en el pero lo k ando buscando yo es una conexion de entre SQL y C# pero con windows aplication me a servido para darme una idea oria no lo e intentado pork la makina en k trabajaba el cargador se descompuso y estoy acondicionando otra makina solo kiero saber si es igual sino es asi me podras mandar un ejemplo
Hola álvaro, así es, estos ejemplos, te sirven para conexiones entre aplicaciones y la base de datos, desde programas en consola, hasta aplicaciones WPF o Web, pruébalos 😉
Salu2