Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
Actualizar motor sqlite en android

Hola

¿Alguien sabe si es posible actualizar el motor de SQLite en Android?

Pregunto porque en una App uso una BD que hice con DB Browser usando campos de tipo Integer,Text,Blob,Real y Numeric (que son los que muestra DB Browser) y la App funciona perfectamente en Android 8.1, pero vi que SQLITE Expert maneja mas tipos de datos como Boolean, Date, etc y modifique los campos de la BD y ahora la App se cuelga cuando trato de abrir una tabla, si dejo los campos como antes, funciona otra vez, por eso asumo que el problema es la versión de SQLite que trae android 8.1

Si alguien sabe como solucionar esto le agradecere su ayuda.

Saludos
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #2  
Antiguo 06-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No puedes hacer nada, salvo que tengas la opción de "Actualizar el sistema" a una versión más nueva.
La otra opción es tener el dispositivo "rooteado", así podrías intentarlo, aunque tampoco sería fácil.
Los problemas de ese tipo son habituales, por eso hay que diseñar la BD y usar selects y demás que cumplan con sistemas obsoletos, porque no sabes qué versiones tendrán los posibles usuarios.
Responder Con Cita
  #3  
Antiguo 06-11-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
Gracias por responder Casimiro, lo suponía ya que no encontré en ningun lado como hacerlo, (había una con la versión 3.5 atrsada por cierto por medio de root), tendré que hacerlo como comentas, por compatibilidad ya que el programa se usara en muchos equipos con diferentes versiones de android, la otra opción que podría hacer, es usar otra base de datos, por allí lei que firebird es una buena opción, voy a investigar, saludos.
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #4  
Antiguo 07-11-2023
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Por lo poco que vi, SqlExpert es un IDE/GUI para usar Sqlite, pero no un motor. De ser así, en tu caso dudo mas que SqlExpert corrompa el archivo a que que falle la libSqlite. Solo con el fin de probar, te recomiendo hacer lo siguiente
  1. Modificar/editar el archivo en SqlExpert
  2. Abrir el archivo generado con sqlite desde la consola.
  3. Ejecutar .schema y copiar el resultado.
Si la consola falla, entonces SqlExpert no está haciendo algo bien, y el archivo no es compatible con libSqlite.
Si no falla, con ese resultado podrías generar la base datos desde cero desde la consola, garantizando compatibilidad.

Por otro lado, si SelExpert fuera un motor/librería/fork de sqlite, desconozco en Android, pero hablando del Linux, y considerando que uno es hijo del otro, capaz te sirva saber lo siguiente:
Sqlite es un motor de una librería única. o sea que funcionalmente es solo requiere un archivo en el sistema operativo. Esto implica que para que tu aplicativo pueda funcionar, solo debería encontrar en su search path, la librería esperada. Y como siempre el search path, se inicia por la ruta de ejecución, para " Actualizar motor sqlite", como dice el asunto del hilo, solo deberíamos copiar la librería en la ruta de instalación. Obviamente esto es exclusivo de nuestra aplicación.

Saludos.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 07-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por delphi.com.ar Ver Mensaje
... para " Actualizar motor sqlite", como dice el asunto del hilo, solo deberíamos copiar la librería en la ruta de instalación. Obviamente esto es exclusivo de nuestra aplicación.
Es una buena idea, habrá que probarlo.
Responder Con Cita
  #6  
Antiguo 08-11-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
Hola Federico

Lo que entiendo es que la base de datos no se corrompe al usar uno u otro editor SQLite, como comentaba el SQLite que trae integrado el Android 8.1 como es obvio es antiguo y por lo mismo se bloquea la App, pero si regreso los campos al formato anterior funciona.
Lo que comentas del motor supongo es algo similar a MySQl que requiere una DLL para que se ejecuten los programas en Windows, ahora en Android cual vendría siendo el equivalente de la "DLL" para SQLite? En la página de SQLite vi que hay unos archivos para Android pero ni idea de como usarlos.
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #7  
Antiguo 08-11-2023
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por cancun Ver Mensaje
Lo que comentas del motor supongo es algo similar a MySQl que requiere una DLL para que se ejecuten los programas en Windows, ahora en Android cual vendría siendo el equivalente de la "DLL" para SQLite? En la página de SQLite vi que hay unos archivos para Android pero ni idea de como usarlos.
No, MySql requiere un motor que corra como servidor, y la librería "que usan los programas en Windows" es un cliente con el que te conectas a ese servidor. Sqlite es una base de datos sin servidor, simplemente usas un archivo mediante una librería. Podríamos decir algo similar a Access en Windows.
En Linux dependiendo de la distribución, la librería suele ser libsqlite3.so. Donde se usa la práctica común de dejar una archivo por versión y un symlink genérico a ese nombre. Por lo que vi en Android, parece ser libsqliteX.so, pero como es dependiente de la arquitectura hay un binario por cada arquitectura soportada.

Cita:
Empezado por cancun Ver Mensaje
Lo que entiendo es que la base de datos no se corrompe al usar uno u otro editor SQLite, como comentaba el SQLite que trae integrado el Android 8.1 como es obvio es antiguo y por lo mismo se bloquea la App, pero si regreso los campos al formato anterior funciona.
Es simplemente olfato, pero me huele que no tienes problemas de versiones, sino con otra cosa. Esto sobre todo fundamentado en que Sqlite es muy flexible con los tipos de datos, el juego de tipos es muy limitado.

Cita:
SQLite uses a more general dynamic type system. In SQLite, the datatype of a value is associated with the value itself, not with its container. The dynamic type system of SQLite is backwards compatible with the more common static type systems of other database engines in the sense that SQL statements that work on statically typed databases work the same way in SQLite. However, the dynamic typing in SQLite allows it to do things which are not possible in traditional rigidly typed databases. Flexible typing is a feature of SQLite, not a bug.
Referencia


¿Pudiste abstaer código de la aplicación como para ver en que momento se bloquea?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 08-11-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
>>¿Pudiste abstaer código de la aplicación como para ver en que momento se bloquea?

Si claro, cuando abre el Query o sea cuando llega a quConsulta.Open; se bloquea, ni siquiera da error.

Hay manera de que mi App utilice el libsqliteX.so (descargado de la pagina de SQLite) y tener acceso de esa manera a la última versión? Bastará con que se copie en la misma carpeta de la APP?

Saludos
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #9  
Antiguo 09-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No debería bloquearse, simplemente mostrar un mensaje de error.
Eso suena raro.
Responder Con Cita
  #10  
Antiguo 09-11-2023
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por cancun Ver Mensaje
Si claro, cuando abre el Query o sea cuando llega a quConsulta.Open; se bloquea, ni siquiera da error.
Ok.. ¿y cuál es la consulta?... ¿Cuántos registros tiene la tabla/resultado?


Cita:
Empezado por cancun Ver Mensaje
Hay manera de que mi App utilice el libsqliteX.so (descargado de la pagina de SQLite) y tener acceso de esa manera a la última versión? Bastará con que se copie en la misma carpeta de la APP?
No tengo experiencia en Android, pero en sistemas operativos similares con que esté en la misma carpeta del ejecutable es suficiente.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 10-11-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
Ok.. ¿y cuál es la consulta?... ¿Cuántos registros tiene la tabla/resultado?
Como dije al principio, el problema no es la consulta (es un select sencillo y devuelve menos de 100 registros), el problema es al asignarle longitud a un campo Text o usar algun campo de tipo Boolean, Date, etc.

Voy a hacer la prueba copiando el archivo que descargue para Android de la página de SQLite (agregandolo en Deployment) para ver si funciona, en caso de que no, estoy pensando probar Firebird con Zeoslib
__________________
Cancun, Q.Roo, México
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con SQLite en Android 7.1.1 cancun Desarrollo en Delphi para Android 4 02-09-2023 18:32:53
Delphi SQlite Android pruz Desarrollo en Delphi para Android 3 31-05-2021 20:58:46
Actualizar BD Sqlite Android EdgarSamudio Desarrollo en Delphi para Android 4 25-06-2016 17:05:29
Wifi, Android y SQLite Jose Roman Varios 3 10-09-2015 14:36:30
Android SQLite pantalla negra Davidecr Desarrollo en Delphi para Android 9 17-03-2014 18:41:09


La franja horaria es GMT +2. Ahora son las 08:50:08.


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
Copyright 1996-2007 Club Delphi