• Domingo 17 de Noviembre de 2024, 19:24

Autor Tema:  Duda cerrar una conexion con SQL Server desde visual C#  (Leído 4220 veces)

intebysa

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Duda cerrar una conexion con SQL Server desde visual C#
« en: Jueves 5 de Mayo de 2011, 19:39 »
0
Mi consulta es la siguiente:

Estoy trabajando sobre una aplicación hecha en Visual Studio 2008 en C# y con conexión a dos base de datos SQL Server 2008, ambas bases de datos se encuentran por separado en dos computadoras.
Tengo un método que funciona con un objeto timer el cual verifica cada segundo el estado de la conexion con la base de datos del servidor. Mi duda es la siguiente:

Cuando ingresa a este metodo abre la conexión con la base de datos del servidor y verifica, todo eso lo hace correctamente, el problema aparece cuando de verdad se pierde la conexión con la base de datos del servidor.
La aplicacion siguie detectando que existe una conexion a pesar de que en realidad no la hay...
Lo que quiero saber es si hay alguna forma de actualizar la variable de conexion o limpiarla completamente para cerrar la conexion realmente, porque utilizando el metodo .Close() al parecer no esta funcionando.
Este es el codigo del metodo que estoy utilizando:


Las variables se inicia con estos valores:


connection = new SqlConnection(cadena.ToString());
contadorInicioTimerConexion = 0;
banderaConexionActual = false;
 banderaConexionAnterior = false;

private void timer_verifica_conexion_Tick(object sender, EventArgs e)
        {
           
// 5 segundos despues de que el formulario carga se comienza a verificar la conexión cada segundo
            if (contadorInicioTimerConexion > 5)
            {
                try
                {            

                    connection.Open();

                    if (connection.State == ConnectionState.Open)
                    {
                        //si se abre la conexion cambia el estado de la variable
                        banderaConexionActual = true;

                        //Si actualmente existe conexión, pero anteriormente no habia.
                       
                        if (banderaConexionAnterior == false)
                        {
                                 // Registra el evento reestablecimiento de conexión
                         }
                       
                }
                 //Si entra al catch es porque la conexion no se pudo abrir y por lo tanto no hay conexion con la base de datos
                catch (SqlException ex
                {
                     //Cambia la bandera a desconectado
                    banderaConexionActual = false;

                    //Si anteriormente existia conexión conexion pero actualmente no hay.
                   
                    if (banderaConexionAnterior == true && banderaConexionActual == false)
                       {
                       
                        //Registra el evento no se pudo establecer la conexión                      
                        }                


                }
                finally
                {
                    if (connection != null)
                    {
                         if (connection.State == ConnectionState.Open)
                         {
                             connection.Close();
                             connection = null;
                        }
                }
                }
               
            }
            contadorInicioTimerConexion++;
            banderaConexionAnterior = banderaConexionActual;

        }