PhoneGap/iOS上的SQLite数据库 - 超过5MB是否可行

7

我对在iOS上的Phonegap-Native-App中使用SQLite的限制有些困惑。

您可以阅读许多帖子,介绍了5mb存储限制以及iPad会要求您增加存储空间的事实。

现在,我已经成功地将近7000行数据插入到我的SQLite数据库中,使用了通常的Phonegap-Storage-API。相关的db文件大小为26 MB。随后的select语句“select * from ”起作用并显示了db的内容。我在模拟器和设备上都这样做了。我没有收到关于增加存储空间的提示。

这是怎么回事?我是否有什么误解? 在Phonegap中,SQLite数据库真的有5mb的限制吗? 我正在使用Phonegap 1.2和iOS 5。

3个回答

10

您可以使用原生的SQLite数据库(与WebSQL相同)与Phonegap插件一起使用,您将没有任何限制。在iOS5.1中,WebSQL被视为可以随时删除的临时数据...该插件将数据库保存在Document文件夹中,这意味着DB不会被删除并且由iCloud保存。

这是原生SQLite Phonegap插件:https://github.com/davibe/Phonegap-SQLitePlugin关于此插件,这里有一些与WebSQL API的差异,这是一个适配器: https://gist.github.com/2009518

您还应该迁移旧的WebSQL db文件(存储在Library/WebKit或Caches目录中)到Document文件夹中。这是一个执行此操作的代码: https://gist.github.com/2009491

如果数据很重要,您应该将其保存到服务器。我编写了一个小型库,将SQlite DB同步到服务器: https://github.com/orbitaloop/WebSqlSync


3
我自己发现了:
在一个事务中打开第一个事务并一次性插入7000条记录成功。
如果将插入操作分成多个事务,每个事务插入500条记录,那么5 MB的限制就会生效。 PhoneGap不会给出任何提示,它只是不插入记录。

你对这个问题有进一步的了解吗? - Tegra Detra
我也进行了一些探索性的挖掘。我成功地将20个数据存储器每个4.5MB,总计90MB压缩到Safari Web应用程序中,而不需要更多的存储空间。这是在一个事务中完成的。下一个事务将会失败。 - oligofren

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接