2012-01-24 14 views
7

Sono un po 'confuso sui limiti dell'utilizzo di SQLite in un'app nativa di Phonegap su iOS.Database SQLite su PhoneGap/iOS - È possibile più di 5mb

È possibile leggere molti post sul limite di 5mb di archiviazione e sul fatto che il proprio Ipad può chiedere di aumentare lo spazio di archiviazione.

Ora sono riuscito a inserire quasi 7000 righe nel mio database SQLite, utilizzando la consueta API Phonegap-Storage. Il file db corrispondente ha una dimensione di 26 MB. Una successiva istruzione select "select * from" funzionava e mostrava il contenuto del db. L'ho fatto nel simulatore e sul dispositivo. Non ho ricevuto la domanda per aumentare lo spazio di archiviazione.

Come può essere? Frainteso qualcosa? C'è davvero un limite di 5mb per dbs SQLite in PhoneGap? Sto utilizzando PhoneGap 1.2 e iOS 5.

risposta

3

ho scoperto da sola:

Riesce ad aprire la prima operazione e inserire i 7000 record in una sola volta in quella unica e sola transazione.

Se ho diviso gli inserimenti in transazioni separate, diciamo 500 record per transazione, la limitazione di 5 MB ha effetto. PhoneGap non dice nulla, semplicemente non inserisce i record.

+0

Hai fatto ulteriori scoperte su questo problema? – Prospero

+0

Ho anche fatto qualche ricerca esplorativa su questo. Sono riuscito a racchiudere 20 datastore con 4,5 MB ciascuno, per un totale di 90 MB in un'app di Safari Web senza richiedere ulteriore spazio di archiviazione. Era in una transazione. La prossima transazione fallirà. – oligofren

10

È possibile utilizzare un DB SQLite nativo (uguale a WebSQL) con un plug-in per PhoneGap e non si avranno limitazioni. In iOS5.1, WebSQL è considerato un dato temporaneo che può essere cancellato in qualsiasi momento ... Questo plugin salva il database nella cartella Document, ciò significa che il DB non viene cancellato e salvato da iCloud.

Ecco il Native plug SQLite PhoneGap: https://github.com/davibe/Phonegap-SQLitePlugin Per quanto riguarda questo plugin, ci sono alcune differenze tra le API WebSQL, qui è un adattatore: https://gist.github.com/2009518

Si dovrebbe anche eseguire la migrazione del vecchio file WebSQL db (memorizzato in Cartella Libreria/WebKit o Caches) nella cartella Documenti. Ecco un codice per farlo: https://gist.github.com/2009491

E se i dati sono importanti, è necessario salvarlo su un server. Ho scritto una piccola lib per sincronizzare il database SQlite con un server: https://github.com/orbitaloop/WebSqlSync

Problemi correlati