Domanda

Sto utilizzando un file di database SQLite nella mia applicazione Android che viene creato da diversi pezzi memorizzati nella cartella delle risorse utilizzando il seguente approccio: ReignDesign: utilizzo del proprio database SQLite nelle applicazioni Android

Al termine del processo di assemblaggio vorrei controllare se il database è stato unito correttamente.I seguenti approcci mi sono passati per la mente:

  • Confronto hash MD5
  • Verifica dell'esistenza della tabella e del conteggio delle voci

Quale approccio consiglieresti?C'è un modo migliore?

Grazie,

Philipp

È stato utile?

Soluzione

Ho avuto una situazione simile in un'applicazione che sto sviluppando.Ci sono molti modi per farlo;ma alla fine ho smesso di preoccuparmi di cosa esattamente e come misurare al meglio l'integrità del database, e invece mi sono concentrato su "il mio database è utilizzabile dalla mia applicazione".

Quindi fondamentalmente provo se: 1) posso aprire correttamente il database SQLite 2) posso eseguire query sul database e 3) se il risultato di una query predefinita restituisce ciò che ci si aspetta.

Quindi, in pratica: includi una tabella con un record di ID noto che fornisce un valore che conosci, quindi prova a leggere quel valore.Il controllo del conteggio del tavolo non può sperare.

Detto questo, spero che qualcuno qui con una buona conoscenza dei sistemi DB spieghi a) esattamente cosa fa PRAGMA integrity_check eb) quanto sia affidabile e quanto sia efficiente rispetto ai controlli manuali delle tabelle.

Altri suggerimenti

in API 11, SqliteDatabase ha un metodo ISDatabaseinTegrityok per il controllo dell'integrità dei database SQLite:

http://developer.android.COM / Riferimento / Android / Database / SQLITE / SQLITEDATABASE.HTML # ISDatabaseinTeGrityOK ()

e il codice sorgente è disponibile qui:

https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/core/java/android/database/sqlite/sqlitedataatabase.java#l2585

È facile da backport su vecchi dispositivi.

Preferirei un secondo approccio al primo sia per quanto riguarda le prestazioni che per la facilità di codifica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top