2012-01-24 50 views
7

我對iOS中的Phonegap-Native-App中使用SQLite的限制有些困惑。PhoneGap/iOS上的SQLite數據庫 - 超過5mb的可能

您可以閱讀許多關於5MB存儲限制的文章,以及您的Ipad可以要求您增加存儲空間的事實。

現在我設法使用通常的Phonegap-Storage-API將近7000行插入到我的SQLite數據庫中。相應的db文件的大小爲26 MB。下面的選擇語句「select * from」工作並顯示數據庫的內容。 我已經在模擬器和設備上做了這些。我沒有得到提高存儲的問題。

這怎麼可能?我誤解了什麼嗎? Phonegap中的SQLite dbs是否真的有5mb的限制? 我使用PhoneGap的1.2和iOS 5

回答

3

我發現我自己:

它成功打開第一筆交易,並在有且只有交易一次插入7000條記錄。

如果我將插入分割爲單獨的事務,假設每個事務有500條記錄,則5 MB的限制會生效。 PhoneGap沒有說什麼,它只是不插入記錄。

+0

您是否對此問題做過更多發現? – Prospero

+0

我也做了一些探索性的挖掘。我設法將20個數據存儲每個4,5MB填滿,共90MB到一個Safari瀏覽器應用程序,而不需要更多的存儲空間。那是在一次交易中。下一次交易將失敗。 – oligofren

10

您可以使用帶有phonegap插件的本機SQLite數據庫(與WebSQL相同),並且不會有任何限制。在iOS5.1中,WebSQL被認爲是可隨時刪除的臨時數據...該插件將數據庫保存到Document文件夾中,這意味着數據庫不會被刪除並由iCloud保存。

這裏是本地人的SQLite PhoneGap的插件:https://github.com/davibe/Phonegap-SQLitePlugin 關於這個插件,還有的WebSQL API之間的一些差異,這裏是一個適配器: https://gist.github.com/2009518

你也應該遷移舊的WebSQL數據庫文件(存儲在庫/ WebKit或Caches目錄)到Document文件夾。這裏是一個代碼來做到這一點: https://gist.github.com/2009491

如果數據很重要,你應該將其保存到服務器。我寫了一個小庫來將SQlite數據庫同步到服務器: https://github.com/orbitaloop/WebSqlSync