Spanish (SOLUCIONADO) Error al usar una BD encriptada con SQLCipher usando DB Browser for SQLite (PC)

Seneca

Active Member
Licensed User
Hola.

Estoy empezando a indagar SQLCipher y me surge una duda.

Hasta ahora de empezar con el cifrado, las BD las creo en el PC (SQLite Studio) y las incrusto sin ningún registro en la app a través de la carpeta Files. Al iniciar la APP, lo primero que hago es descargar los registros desde un servidor y rellenar las BD.

Por lo que he leído, SQLCipher no puede encriptar una BD ya creada (aunque esté vacía). Ante esto creo que tengo dos opciones: crear las BDD (ya encriptadas) mediante código o bien buscar un editor SQLite para PC con soporte SQLCipher.

Como lo segundo me resulta más cómodo, he encontrado el editor para PC DB Browser for SQLite, que tiene soporte SQLCipher. Pero resulta que cuando en la app intento trabajar con una BD encriptada con este programa me da error de tabla no encontrada.

¿Es posible que la causa de esto sea porque se usan diferentes versiones de SQLCipher? la librería de B4A está basada en SQLCipher v3.59 y DB Browser for SQLite está basado en SQLCipher 3.15.2

Saludos.
 

Seneca

Active Member
Licensed User
Resuelto. He usado la herramienta Limpiar Proyecto y al volver a ejecutar me funciona correctamente.

Saludos.
 

Seneca

Active Member
Licensed User
Ha sido un "espejismo". Aunque había dado el tema por resuelto, he retirado esta etiqueta del título. Y es que he comprobado que si creo una BD con DB Browser for SQLite, encriptándola con SQLCipher (dentro del propio editor) luego no puedo obtener sus datos desde B4A usando la librería SQLCipher.

¿Alguien ha usado con éxito esta combinación?
 

josejad

Expert
Licensed User
Longtime User
Hola Seneca:

No he usado nunca esas herramientas, así que no tengo experiencia que pueda ayudarte.

Supongo que has buscado en el foro en ingles, no?
He buscado info fuera también, y el error más s parecido que he encontrado es alguien que obtiene el error: “no such table”. Pero le indican que debe tratarse de un error de contraseña y no creo que ese sea tu caso.

He visto algo de ayuda de Erel en este post, que no sé si has visto:
https://www.b4x.com/android/forum/t...-structure-to-sqlcipher-db.91820/#post-581143

Si no, quizás en el foro en inglés alguien tenga más as experiencia, si necesitas ayuda con eso, no dudes en decírmelo.

Saludos,
 

Seneca

Active Member
Licensed User
Hola.

Sí, había repasado los foros en inglés si encontrar respuesta.

He dado con el fallo. Estaba cometiendo un error de principiante, tan simple que me lo pasaba por alto. Como la BD la adjunto a la carpeta Files del proyecto, antes de usarla había de copiarla desde DirAssets a otra carpeta con posibilidad de escritura [rutaDB=DBUtils.CopyDBFromAssets("libros_prot.db")]. Pero antes de copiarla, he de borrar una versión antigua que pudiese tener en esa ubicación de destino. Y ese paso de borrado previo es el que no hacía bien, por una errata en el nombre del archivo. Como consecuencia, el copiado desde DirAssets no era efectivo y la app seguía accediendo (con error) a una versión antigua de la BD.

Gracias @José J. Aguilar por preocuparte en buscar información.
Saludos.
 
Last edited:

josejad

Expert
Licensed User
Longtime User
Me alegro de que díeras con la tecla. No hay de que, he visto que te curras el contestar a la gente, así que es lo mínimo que podía hacer.
Seguro que en breve tendrás que contestar algunas mias.

Saludos
 
Top