Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema Grave con conexión a BD Firebird (https://www.clubdelphi.com/foros/showthread.php?t=62937)

angelholberg 21-01-2009 23:57:50

Problema Grave con conexión a BD Firebird
 
Saludos a todos lso del foro, bueno planteo mi problema:
Estoy realizando un sistema de BD utilizo componentes DBExpress Delphi 2009, la conección a la BD la hago por medio de código ya que no me es factible trabajar con el .INI el problema esta que cuando se genera algun error en cualquier parte de mi sistema esa conección establecidad del SQLConnection con mi BD se pierde, entonces quisiera alguien me pueda ayudar sobre esto, una idea que me surgio es hacer un tipo demonio que me este monitoreando la conección que este activa y cuando se desconecte la vuelva a establecer si alguien em peude ayudar gracias

Al González 22-01-2009 08:41:55

Tal vez si nos das un poco más de información, como detalles sobre los tipos de errores que aparentemente hacen que se pierda la conexión. Y qué mensajes aparecen en pantalla cuando esto sucede. Quizá también algo de código.

Y por otra parte la versión de Firebird y el controlador DBX que utilizas para esa conexión.

Saludos. :)

angelholberg 22-01-2009 16:51:53

Detalle de Problema Grave con conección a BD Firebird
 
Gracias Al González por tu respuesta pues mira detallo mi problema:
1.- Uso Delphi 2009 y los componentes DBExpress
2.- Firebird 2.1
3.- La conección a la BD la hago despues del Application.Initialize; de mi proyecto aca muestro el código que utilizo:
With Datamodulo Do
Begin
SQLEmpresas.Connected := False;
SQLEmpresas.DriverName := 'InterBase';
SQLEmpresas.GetDriverFunc := 'getSQLDriverINTERBASE';
SQLEmpresas.LibraryName := 'dbexpint.dll';
SQLEmpresas.VendorLib := 'gds32.dll';
SQLEmpresas.LoginPrompt := False;
SQLEmpresas.Params.Clear;
SQLEmpresas.Params.Add('DatabaseVendor=Interbase');
SQLEmpresas.Params.Add('DriverName=Interbase');
SQLEmpresas.Params.Add('BlobSize=-1');
SQLEmpresas.Params.Add('CommitRetain=False');
SQLEmpresas.Params.Add('DataBase=' + vpRutaSis+ 'Base\FEEMPRESAS.fdb');
SQLEmpresas.Params.Add('ErrorResourceFile=');
SQLEmpresas.Params.Add('LocaleCode=0000');
SQLEmpresas.Params.Add('ServerCharSet=');
SQLEmpresas.Params.Add('SQLDialect=3');
SQLEmpresas.Params.Add('Interbase TransIsolation=ReadCommited');
SQLEmpresas.Params.Add('WaitOnLocks=True');
SQLEmpresas.Params.Add('User_Name=' + 'SYSDBA');
SQLEmpresas.Params.Add('Password=' + 'masterkey');
SQLEmpresas.Connected :=TRUE;
End;
4.- Todo funciona perfectamente mientras no se haya generado un error al ejecutar un Query por ejemplo un Insert Into, un Select, etc.
5.- Si sucede alguna exepción (tal es mi caso) al ejecutar la consulta muestra el errror, hay no ahy6 problema se que se esta haciendo aml una operación u otra cosa, despeus salgod e ese módulo y al intentar por ejemplo de hacer un Inser into me manda un mensaje que dice que no ahy conección con mi BD, entonces por tal motivo supongo mi SQLConnection se desconecta de mi BD

Gracias espero puedan ayudarme

Al González 23-01-2009 05:56:28

Personalmente aún no me he aventurado a usar Firebird 2 o alguna de sus subversiones, aunque tal vez lo haga este año.

Pero podría tratarse de algún problema de incompatibilidad entre esa versión y las DLLs utilizadas: dbexpint.dll y gds32.dll. Más probablemente con la primera, que quizá no tiene un soporte completo hacia Firebird 2.1 (puesto que ese controlador DBX está pensado solamente en InterBase).

Yo no tengo problemas por usarlo, pero es porque empleo la versión 1.5.x de Firebird. Se dice que también es compatible con la 2, pero de eso no estoy seguro.

También convendría que nos mostraras el mensaje de error exacto que te aparece (el relacionado con la conexión perdida).

Una sugerencia que hago con frecuencia es "aislar" el problema para detectar más fácilmente la causa. Básicamente es el crear una nueva aplicación con los elementos mínimos necesarios para reproducir el escenario de la falla. Con una aplicación reducida es más fácil averiguar qué origina el problema.

Adicionalmente podrías hacer pruebas con la conexión establecida desde tiempo de diseño, sólo para ver si aparece una diferencia de comportamiento a la hora de ejecutar tu aplicación y ocurrir un error de base de datos.

Espero haber orientado.

Al. :)


La franja horaria es GMT +2. Ahora son las 03:33:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi