Principales respuestas
Controlar error de conexión ASP.NET y Firebird

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
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
-
>>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
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
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
-
>>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
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta sergio_c8a lunes, 16 de mayo de 2016 15:35
-
-