La Web del Programador: Comunidad de Programadores
 
    Pregunta:  55710 - MANTENER UNA MISMA CONEXIÓN ABIERTA EN VARIAS FORMAS.
Autor:  Federico Prado
Saludos a todos!

Estoy realizando un pequeño programa como proyecto final, del cual me piden que utilice 3 usuarios diferentes para accesar a una base de datos SQL Server 2005. Cada usuario con sus respectivos provilegios.

Bueno el caso es el siguiente:

Hablaré únicamente de 4 formas de windows que utilizo:

foma de conexión ( que es la pimera que se abre). En esta forma se pide que se introduzca un usuario y contraseña en sus respectivos textBox. La base de datos y servidor están escogidos por defecto.

Si el usuario y la contraseña con correctos esta forma se cierra y se abre una forma como de menú, la cual es un mdi y tiene las direntes opciones:

Conexion ---> Conectar y Desconectar
Estudiantes ---> altas, bajas, cambios y consultas
.... y así sucesivamente con otras opciones.

Bien, esl caso es el siguiente:

Quisiera encontrar alguna forma de instanciar la conexión en las demás formas para que permanezca abierta con el usuario seleccionado, y que no se tengan que estar pidiendo los datos cada vez que se quiera realizar algún trabajo con la base de datos.

Muchas gracias por su ayuda!

  Respuesta:  Jorge SAER
Federico:
El mecanismo que resulta práctico para lo que comentas es el siguiente:

Creas un miembro estático que represente la conexión en tu form principal.

private static SqlConnection _conn = new SqlConnection();

creas una propiedad estática que retorne la conexión:

public static SqlConnection Connection
{
get
{
return _conn;
}
}

En el evento Load del form asignas el string de conexión y abres la conexión:

_conn.ConnectionString = "mi string de conexión"
_conn.Open();

Es aconsejable que el string de conexión puedas tomarlo desde el archivo de configuración de la aplicación.

finalmente, dentro de método Disposing del form, si la conexión está abierta, la cierras.

if(_conn.State == ConnectionState.Open)
{
_conn.Close();
_ conn = null;
}

para acceder a la conexión en cualquier momento/lugar de la aplicación simplemente lo haces mediante la propiedad Connection de tu MainForm

Saludos