![]() |
Como usar Firebird con delphi xe7
Hola a todos
Necesito usar una BD portable para mi aplicacion, probé con SQLite y me da problemas, pues se necesita escritura concurrente, y tambien da problemas con el formato de fechas. Decidi usar Firebird que no dede dar problemas con la escritura concurrente, pero nunca lo he usado, por eso necesito 2 cosas: 1- Que version debo instalar, no encuentro la embebida despues de la 3 2- como ya tengo la BD en MySQL, quisiera migrarla a Firebird, para no tener que crear todas las tablas de nuevo |
Seguramente esto te aclara un poco las cosas:
https://www.ibphoenix.com/files/Embedded_fb3.pdf En cuanto a los problemas con sqlite, yo lo uso en aplicaciones android desde hace 13 años y no he tenido ningún problema con las fechas. En cuanto a la "escritura asíncrona", no sé exactamente a qué te refieres, ¿que mantenga los datos en caché antes de guardarlos definitivamente? |
pues sobre los problemas de sqlite, te comento:
la aplicacion cada cierto tiempo verifica si hay conexion a internet, y sincroniza la bd local con la remota, insertando o modificando los registros en sqlite. lo usuarios de la aplicacion escriben en la bd sqlite. Problema: cuando coincide que el usuario va a guardar un registro en el momento que esta sincronizando, la aplicacion explota porque no puede accedera la BD Lo de las fechas, quizas se resuelva por codigo, pero cuando se ejecuta en otra pc que tiene una configuracion regional diferente, salta el error de formato de fecha no valido por eso quiero cambiar de bd local a firebird o IB, o a la que me recomienden |
Pero esos no son fallos de sqlite, es que no lo estás usando adecuadamente, primero debes crear la base de datos con:
PRAGMA journal_mode=WAL; Lo del formato de la fecha, obviamente, tienes que controlarlo tú, así será con todas las bases de datos, ya sea firebird, sqlite, postgesql, mssql, etc. si han guardado fechas de forma distinta tendrás que adaptarla. Te recomiendo una forma más simple de guardar las fechas y te quitas de problemas, guárdalas como un número (long) con el formato, ejemplo: 202504021923 (aaaammddhhnnss), se acabó el problema. Además recuerda guardar siempre la fecha/hora UTC, no la local, así siempre estarán todas las fechas/horas sincronizadas. En cuanto a firebird "embebida", ten cuidado porque la DLL embebida no permite múltiples procesos conectados al mismo tiempo a la base de datos y no soporta acceso multi-proceso, aunque sí multi-thread dentro del mismo proceso (con precaución).Y que yo sepa tampoco es multiusuario. Si vas a usar firebird, instala un servidor. |
Por el momento sigo usando sqlite, para evitar el problema de la concurrencia, alargaron el tiempo de sincronizacion.
El problema es que la conexion a internet es muy inestable, y falla mucho, por eso se necesita guardar los datos local, y cuando se detecte conexion a internet, entonces sincronizar con la bd remota Quizas me haya faltado eso: PRAGMA journal_mode=WAL; Ya resolvi lo de la fecha, convirtiendo siempre al formato estandar UTC |
^\||/^\||/^\||/
|
La franja horaria es GMT +2. Ahora son las 11:37:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi