Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Atacar Firebird desde Delphi. (https://www.clubdelphi.com/foros/showthread.php?t=70453)

rfernandez 21-10-2010 17:30:42

Atacar Firebird desde Delphi.
 
Buenas a tod@s,

En breve empezamos nuevo proyecto y quiero empezar desde 0.
Hasta ahora para conectarnos contra Firebird lo hacemos mediante BDE, es lo que tiene ir arrastrando proyectos desde delphi 1.0.

Las proximas aplicaciones tenemos claras que las vamos a realizar en 3 capas mediante DataSnap pero no tenemos claro con que driver atacar fisicamente al Firebird si con ibx, dbexpress, ado.net,....

Agradecería sugerencias o experiencias personales.

Gracias de antemano a tod@s.

guillotmarc 21-10-2010 21:34:47

Hola.

Te recomiendo que utilices dbExpress.

Veamos las alternativas :

IBX no está diseñado para funcionar con Firebird sinó que está diseñado para funcionar con Interbase. Así pues te puedes encontrar con problemas de compatibilidad (pocos, porqué hay mucha gente que usa IBX con Firebird, pero cuanto más avanza Firebird más te vas a encontrar con que algunas de sus mejoras no son accesibles desde IBX).

ADO.Net es para programas .Net. En Delphi para Win32 puedes utilizar ADO, pero o bien utilizas ADO conectado al ODBC de Firebird (lo cual no parece muy óptimo), o bien tienes que utilizar un proveedor OleDB privado. Y no hay muchos en el mercado (que yo sepa solo hay uno, así que cualquier día te puedes encontrar colgado).

Otras posibilidades : Puedes utilizar componentes de terceros, para Delphi, con acceso a Firebird : FIBPlus (muy bueno, pero cada vez parece que está más muerto, hace un año que no se actualiza), IBDAC (buena alternativa), ZeosLib (buenos componentes genéricos, pero tampoco parece que tengan mucha actividad).

Sobretodo me inclino por dbExpress, porqué vas a trabajar con 3 capas, y este es el modo para el que se ha diseñado dbExpress. Es un driver mínimo (con lo que no debería dar muchos problemas) que solo proporciona cursores de solo avance (que es lo único que necesita Datasnap, los cursores bidireccionales para los controles en nuestro programa, los proporciona el ClientDataset que le conectemos).

En definitiva, te recomiendo dbExpress por su simplicidad (lleva solo que se necesita para DataSnap) y porqué puedes encontrar soporte específicico para Firebird a partir de Delphi 2010, en drivers dbExpress comerciales y en drivers dbExpress open source.

Si no quieres usar componentes genéricos, como los dbExpress, puedes usar componentes específicos de Firebird, lo que te permite la ventaja de disponer de controles especiales que te dan acceso al API de Servicios de Firebird, para hacer copias de seguridad, etc. ...

En este caso parece que lo único recomendable es IBDAC y FIBPlus

http://www.devart.com/ibdac/
http://www.devrace.com/en/fibplus/

En caso de que optes por esta solución, yo seguramente me quedaría con los primeros (más que nada porqué tienen más actividad, no porqué sen mejores).

Si quieres una recomendación, yo te recomiendo que optes por dbExpress.

He utilizado ambos (dbExpress en mis proyectos Delphi 6 y FibPlus para mis proyectos Delphi 2007-2010). Y me quedo con dbExpress (estoy pensando en volver a cambiar mis proyectos modernos a dbExpress). Me he encontrado un par de bugs muy molestos en FIBPlus, los cuales no han solucionado, y dado que yo también programo en DataSnap, a fin de cuentas no tengo ninguna ventaja especial por usar FIBPlus, dbExpress me iría igual de bien (o mejor, ya que nunca me dió el menor problema en Delphi 6).

Saludos.

rastafarey 22-10-2010 03:03:41

resp
 
No te puedo decir si usar esto o aquello ya que no se de que recursoso puedes disponer. pero como dices que van a trbajar en tres capas. Te recomiendo leer acerca de remobjects. Y para la conexion yo usaria fibplus o ib objects. Pero como piensar trabajar en tres capas me inclinaria por fibplus ya que ibobjects ofrece grandes caracteristicas pero son mas para la parte grafica. Esto es de mi parte no quere decir que sea la mejor opcion.

erickperez6 22-10-2010 21:51:56

Cita:

guillotmarc:

Me he encontrado un par de bugs muy molestos en FIBPlus, los cuales no han solucionado
Me gustaria que comentaras un poco acerca de esos bugs que tiene FIBPlus, creo que serian de interes para todos los que usamos estos componentes y que desconocemos estas fallas,

gracias

guillotmarc 22-10-2010 22:03:18

Cita:

Empezado por erickperez6 (Mensaje 380188)
Me gustaria que comentaras un poco acerca de esos bugs que tiene FIBPlus, creo que serian de interes para todos los que usamos estos componentes y que desconocemos estas fallas,

gracias

Cosas como el tratamiento de los parámetros.

Por ejemplo en Delphi 2010 y FibPlus 6.9.9, me falla el código para guardar un archivo en la base de datos. Es algo muy sencillo, un INSERT INTO xxx (CAMPO_BLOB) values :PARAMETRO.

Pues bien, cargo el archivo en el parámetro con un ParamByName(xxx).LoadFromFile(Archivo) Pero cuando ejecuto la sentencia, no se me guarda nada en la base de datos :(.

O bien, que todos los parámetros en consultas los trata como strings, y al menos a mi, a veces me hace cosas raras. Sobretodo con las fechas que le paso de un TDbDatetimePicker. Al final tengo que pasarle por código, al parámetro, un FormatFloat('dd/mm/yyyy', Fecha) o un Null si corresponde.

Todo terriblemente molesto, como decía, cuando te lo encuentras. :( :(

rfernandez 24-10-2010 21:19:50

Gracias a todos,
Esta semana me llega la licencia del Delphi EX y empezaremos ha hacer pruebas.

Gracias nuevamente.

Chandra_ 04-11-2010 11:28:28

Hola

No sé si lo he entendido bien, pero, por lo que comenta guillotmarc, deduzco que puedo usar Firebird + D2007 + dbExpress sin instalar ningún driver adicional ¿o no?

Así llevo trabajando un tiempo y no sé si hago bien o no. Tenía instalado Firebird 2.1.1 (ahora iba a pasarme ya a 2.5) y, aparentemente, todo funcionaba. Tampoco es que haga cosas muy "raras": algún procedimiento almacenado en la base de datos, unos triggers, querys... en fin, lo típico.

Por no repetirme aquí, en este hilo y en este otro he planteado dudas sobre el tema.

Agradecería que alguien me ilustrara sobre este asunto que me trae de cabeza desde ayer.


La franja horaria es GMT +2. Ahora son las 14:14:17.

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