¿Cómo determinas si una .sqlite o .sqback está dañada en Java?

Se me ha dado un directorio de directorios cada uno que contiene una colección de archivos. Sqlite y sqlite que debo analizar.

El problema es que creo que algunos de estos archivos están dañados cuando los recibo porque obtengo el error: ERR: [SQLITE_CORRUPT] La imagen del disco de la base de datos es malformada (la imagen del disco de la base de datos es malformada) en mi consola cuando intento procesarlos . Esto sólo ocurre con algunos de los archivos. He aislado algunos y he intentado ejecutar mi programa en copias frescas de estos archivos malos individualmente y causan errores. La mayoría de los archivos están bien aunque 🙂

Me di cuenta de que existe la posibilidad de que de hecho pueda ser dado archivos corruptos para empezar, así que me gustaría una manera de determinar, antes de tratar de analizarlos, qué archivos son buenos y cuáles no.

Estoy escribiendo en Java. Sólo estoy interesado en la validación sqlite y sqback como sé que funciona mi analizador. Lo estoy reutilizando de un proyecto anterior.

¿Insinuación? Sugerencias? ¿Respuestas?

Muchas gracias por la transferencia de conocimiento.

Ejecute PRAGMA quick_check como una consulta SQL normal. El resultado es el mismo que una tabla de una columna que contiene cadenas; Para una base de datos intacta, obtendrá una sola fila diciendo "ok", para un corrupto, un montón de mensajes de error.

 sqlite> pragma quick_check; ok 

Después de cambiar algunos bytes en el archivo:

 sqlite> pragma quick_check; *** in database main *** Page 64: btreeInitPage() returns error code 11 On tree page 40 cell 23: Child page depth differs On tree page 40 cell 24: Child page depth differs 

No hay ninguna garantía de que se encuentren errores.

  • Android JUnit4 Pruebas - ¿Dónde obtener el contexto de?
  • Android: Cómo sumar todas las columnas de una base de datos SQLite y devolver 1 variable única
  • Cambiar un valor en una columna en sqlite
  • SQlite - Android - Sintaxis de clave extranjera
  • ¿El cursor permanecerá vivo después de cerrar la base de datos?
  • Código de error SQLite de Android 21
  • Consulta SQLite en Android para contar filas
  • Excepción de SQLite "no such table" de Android
  • Cómo obtener ArrayIndex fuera de límites Excepción al agregar nuevos elementos a la lista mientras se desplaza
  • Android usando SQLCipher - ¿cómo se puede descifrar?
  • Androide sqlite comprobar si se ha insertado un nuevo valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.