none
Controlar error de conexión ASP.NET y Firebird RRS feed

  • Pregunta

  • Que tal colegas.

    Estoy desarrollando una aplicación web con base de datos firebird.

    Quisiera saber como controlar un error de conexión, para que cuando no se pueda conectar a la base de datos la aplicación no se detenga y siga con el proceso o que me muestre algún mensaje en un messagebox. Esta es mi conexión:

    string CadenaConexion = "User=SYSDBA;" +
                             "Password=masterkey;" +
                             "Database=C:/TRANSMISIONES.FDB;" +
               
                             "Port=3050;" +
                             "Dialect=3;" +
                             "Charset=NONE;" +
                             "Role=;" +
                             "Connection lifetime=15;" +
                             "Pooling=true;" +
                             "MinPoolSize=0;" +
                             "MaxPoolSize=50;" +
                             "Packet Size=8192;" +
    
                             "ServerType=0";
            FbConnection FirebirdConeccion = new FbConnection();
    
            FirebirdConeccion = new FbConnection(CadenaConexion);
            FirebirdConeccion.Open();    // cuando la conexión no se logra, mi aplicación web se interrumpe :(

    De antemano gracias!..


    • Editado sergio_c8a domingo, 15 de mayo de 2016 21:10
    domingo, 15 de mayo de 2016 21:09

Respuestas

  • Hola sergio_c8a,

    Lo que requieres es hacer uso de algún mecanismo que detecte y controle las excepciones, puedes hacer uso del bloque try...catch. El bloque se construye de la siguiente manera:

    try
            {
                /*instrucciones*/
                cn.Open();
            }
            catch (Exception e)
            {
                /*Realizar alguna acción*/
            }


    Es posible detectar excepciones especificas, en este caso producidas por un problema con el origen de datos. No estoy seguro si el proveedor de datos para Firebird lo implemente pero para SQL Server existe la clase SqlException que permite controlar los errores o advertencias producidas por SQL Server, bajo la forma:

    try
    {
            /*instrucciones*/
    }
    catch (SqlException ex)
    {
            /*Realizar acción particular*/
    
    }
    catch(Exception ex)
    {
            /*Realizar acción general*/
    }

    Finalmente, considera que antes de obtener una excepción deberás esperar que el tiempo de espera en intentar una conexión haya sido agotado, esto lo deberías configurar en la propiedad FirebirdConnection.ConnectionTimeout que por defecto es 15 segundos.




    • Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
    domingo, 15 de mayo de 2016 22:14
  • >>siga con el proceso o que me muestre algún mensaje en un messagebox

    estas en un ambiente web no puedes usar el MessageBox, no puedes usar ningun componente winform en un entorno web

    si queires mostrar un alert vas a tener que crearlo en javascript usando el ScriptManager para registrarlo

    para controlar el error usa

    try-catch (Referencia de C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
    lunes, 16 de mayo de 2016 5:19

Todas las respuestas

  • Hola sergio_c8a,

    Lo que requieres es hacer uso de algún mecanismo que detecte y controle las excepciones, puedes hacer uso del bloque try...catch. El bloque se construye de la siguiente manera:

    try
            {
                /*instrucciones*/
                cn.Open();
            }
            catch (Exception e)
            {
                /*Realizar alguna acción*/
            }


    Es posible detectar excepciones especificas, en este caso producidas por un problema con el origen de datos. No estoy seguro si el proveedor de datos para Firebird lo implemente pero para SQL Server existe la clase SqlException que permite controlar los errores o advertencias producidas por SQL Server, bajo la forma:

    try
    {
            /*instrucciones*/
    }
    catch (SqlException ex)
    {
            /*Realizar acción particular*/
    
    }
    catch(Exception ex)
    {
            /*Realizar acción general*/
    }

    Finalmente, considera que antes de obtener una excepción deberás esperar que el tiempo de espera en intentar una conexión haya sido agotado, esto lo deberías configurar en la propiedad FirebirdConnection.ConnectionTimeout que por defecto es 15 segundos.




    • Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
    domingo, 15 de mayo de 2016 22:14
  • >>siga con el proceso o que me muestre algún mensaje en un messagebox

    estas en un ambiente web no puedes usar el MessageBox, no puedes usar ningun componente winform en un entorno web

    si queires mostrar un alert vas a tener que crearlo en javascript usando el ScriptManager para registrarlo

    para controlar el error usa

    try-catch (Referencia de C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
    lunes, 16 de mayo de 2016 5:19
  • Muchas gracias!.. solo me falta investigar como mostrar un alert.. Saludos!!...

    lunes, 16 de mayo de 2016 15:36
  • Gracias Leandro!..
    lunes, 16 de mayo de 2016 15:36