Principales respuestas
Ocupar una sola conexión para todo mi proyecto

Pregunta
-
Buenos días, estoy comenzando una Aplicación Windows Forms, pero me surje la siguiente duda:
En todas las aplicaciones que e echo con anterioridad ocupo una conexion por cada Windows Form que se necesite conectar a la BD y quisiera saber de que manera puedo declarar solo una vez la conexión y acceder a ella las veces que la necesite.
Espero su ayuda. GRACIAS.
Respuestas
-
Poderse se puede pero recuerda que la programación con base de datos en .Net está pensada para funcionar de forma desconectada. Esto significa que debes mantener las coneciones el menor tiempo posible y necesario.
Saludos, Javier J
- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37
-
Hola Gspindola,
Puedes crear una clase Conexion, y dentro una variable de tipo string que guarde la ruta.
public class Conexion { public static string cadenaConexion = "Data Source=MiServidor;...."; }
Y cada vez que quieras usar la Conexion.
using (SqlConnection con = new SqlConnection(Conexion.cadenaConexion)) { con.Open(); //Resto de código }
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37
-
Si tu proyecto de software contempla una arquitectura en capas entonces las conexiones no las deberías realizar en la UI (WinForm le llamas), la encargada de accionar las conexiones y operaciones contra la base de datos es la capa de acceso a datos.
Pero si tu proyecto no contempla una arquitectura y en cambio juntas presentación, lógica y persistencia en la clase Form (que no es correcto sobre todo si tu proyecto de software es amplio) entonces lo mínimo que deberías tener son métodos (funciones) que ejecuten una acción y/o retornen valores en caso sea necesario.
Sobre la duda que presentas, tampoco es correcto que instancies un objeto de tipo SqlConnection al nivel de la clase Form, si en tu formulario realizas 10 acciones distintas contra la base de datos (que reitero no es lo correcto acoplar funcionalidad) entonces 10 veces debes de abrir y cerrar conexiones (usando la instrucción using). No tema abrir y cerrar conexiones, por lo general existe un pool de ellas disponibles para su uso que optimizan y agilizan los procesos de conexión.
- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37
Todas las respuestas
-
Poderse se puede pero recuerda que la programación con base de datos en .Net está pensada para funcionar de forma desconectada. Esto significa que debes mantener las coneciones el menor tiempo posible y necesario.
Saludos, Javier J
- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37
-
No, no es lo correcto.
Las buenas practicas recomiendan que debes declarar un objeto de tipo Connection sólo en el ámbito que requieras, de esa manera consigues que el objeto quede a disposición del GC luego de finalizar el bloque de uso.
Using cn As New SqlConnection("CADENA_CONEXION") 'Instrucciones End Using
De esa manera el objeto de tipo Connection termina con la instrucción End Using y puedes asegurarte de no tener conexiones abiertas.
- Propuesto como respuesta Sergio Parra martes, 21 de junio de 2016 17:39
-
Hola Gspindola,
Puedes crear una clase Conexion, y dentro una variable de tipo string que guarde la ruta.
public class Conexion { public static string cadenaConexion = "Data Source=MiServidor;...."; }
Y cada vez que quieras usar la Conexion.
using (SqlConnection con = new SqlConnection(Conexion.cadenaConexion)) { con.Open(); //Resto de código }
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37
-
-
Si tu proyecto de software contempla una arquitectura en capas entonces las conexiones no las deberías realizar en la UI (WinForm le llamas), la encargada de accionar las conexiones y operaciones contra la base de datos es la capa de acceso a datos.
Pero si tu proyecto no contempla una arquitectura y en cambio juntas presentación, lógica y persistencia en la clase Form (que no es correcto sobre todo si tu proyecto de software es amplio) entonces lo mínimo que deberías tener son métodos (funciones) que ejecuten una acción y/o retornen valores en caso sea necesario.
Sobre la duda que presentas, tampoco es correcto que instancies un objeto de tipo SqlConnection al nivel de la clase Form, si en tu formulario realizas 10 acciones distintas contra la base de datos (que reitero no es lo correcto acoplar funcionalidad) entonces 10 veces debes de abrir y cerrar conexiones (usando la instrucción using). No tema abrir y cerrar conexiones, por lo general existe un pool de ellas disponibles para su uso que optimizan y agilizan los procesos de conexión.
- Marcado como respuesta Enrique M. MontejoModerator jueves, 23 de junio de 2016 6:37