2012-01-24 24 views
7

Jestem trochę zdezorientowany ograniczeniami używania SQLite w aplikacji Phonegap-Native na iOS.Baza danych SQLite na PhoneGap/iOS - Więcej niż 5mb możliwe

Możesz przeczytać wiele postów na temat limitu 5 MB pamięci oraz fakt, że Twój iPad może poprosić Cię o zwiększenie pamięci.

Teraz udało mi się wprowadzić prawie 7000 wierszy do mojej bazy danych SQLite, przy użyciu zwykłego interfejsu API do przechowywania danych Phonegap. Odpowiedni plik db ma rozmiar 26 MB. Następująca instrukcja select "select * from" zadziałała i wyświetlała zawartość db. Zrobiłem to w symulatorze i na urządzeniu. Nie otrzymałem pytania o zwiększenie pamięci.

Jak to możliwe? Czy coś źle rozumiem? Czy naprawdę istnieje limit 5 MB dla SQLs dbs w Phonegap? Używam PhoneGap 1.2 i iOS 5.

Odpowiedz

3

dowiedziałem się o sobie:

Udaje się otworzyć pierwszą transakcję i włóż 7000 rekordów naraz w tej jednej jedynej transakcji.

Jeśli podzielę wkładki na osobne transakcje, powiedzmy 500 rekordów na transakcję, ograniczenie to ma wpływ na 5 MB. PhoneGap nic nie mówi, po prostu nie wstawia rekordów.

+0

Czy dokonano więcej odkryć w tej sprawie? – Prospero

+0

Też zrobiłem kilka badań na ten temat. Udało mi się zmasakrować 20 magazynów danych o pojemności 4,5 MB każdy, łącznie 90 MB do internetowej aplikacji Safari bez pytania o więcej miejsca. To była jedna transakcja. Następna transakcja zakończy się niepowodzeniem. – oligofren

10

Możesz użyć natywnego SQLite DB (takiego samego jak WebSQL) z wtyczką phonegap i nie będziesz mieć żadnych ograniczeń. W iOS5.1, WebSQL jest uważany za tymczasowe dane, które można usunąć w dowolnym momencie ... Ta wtyczka zapisuje bazę danych w folderze Dokument, co oznacza, że ​​DB nie jest usuwany i jest zapisywany przez iCloud.

Oto Native SQLite PhoneGap wtyczki: https://github.com/davibe/Phonegap-SQLitePlugin Odnośnie tej wtyczki, istnieją pewne różnice pomiędzy API WebSQL, tutaj jest adapter: https://gist.github.com/2009518

Należy również migrować stary plik WebSQL db (przechowywany w Library/WebKit lub Caches) do folderu Dokument. Oto kod: https://gist.github.com/2009491

Jeśli dane są ważne, należy je zapisać na serwerze. Napisałem małą bibliotekę, aby zsynchronizować SQlite DB z serwerem: https://github.com/orbitaloop/WebSqlSync

Powiązane problemy