PhoneGap使用什么数据库以及大小限制是多少?

use*_*073 67 mobile offline cordova

我写了一个HTML5数据库,它抽象了localStorage,indexedDB和WebSQL.使用直接HTML5我的数据库选项如下所示:

  • IE10 - indexedDB - 最大1GB
  • FireFox - indexedDB - 无限制
  • Safari - WebSQL - 最大50MB
  • Chrome - IndexedDB(或Web SQL) - 无限制(使用HTML5配额API ref1,ref2)
  • Opera - WebSQL(直到他们切换到webkit?) - 无限制

我想使用PhoneGap或Quota API扩展最大数据库大小.从PhoneGap的文档来看,它看起来像当前的PhoneGap数据库生态圈是:

  • WebSQL - Android,Blackberry,iPhone和webOS
  • localStorage - Windows Phone 7
  • indexedDB - Windows Phone 8,我猜,到处都是indexedDB可用,但WebSQL不可用.

还有PhoneGap SqlLite插件.iOS,Android,Windows Phone 8+


问题1 - 我对数据库PhoneGap将使用的准确度的理解是什么?

问题2 - 是否有关于给定类型的PhoneGap数据库将存储多少数据的可靠文档?*如果是PhoneGap数据库而不是浏览器数据库实现.

问题3 - PhoneGap是否计划遵守Web存储标准,从而放弃WebSQL以支持indexedDB?如果是这样,一旦切换到indexedDB,我仍然可以使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)吗?

问题4 - 在数据库大小有限且无法通过PhoneGap或Quota API扩展但是可以访问文件系统的情况下,可以合理地假设"额外"数据可以存储在设备的文件系统上或在SD卡上?

Sas*_*aZd 95

我对数据库PhoneGap将使用哪些准确的理解?

是的.PhoneGap可以使用LocalStorage,SessionStorage或SQLite数据库.您也可以使用PhoneGap通过插件连接到设备本机类,并传递本机类数据,然后将其存储在设备上.

是否有关于给定类型的PhoneGap数据库将存储多少数据的可靠文档?如果是PhoneGap数据库而不是浏览器数据库实现.

  1. LocalStorage :: 10MB
  2. SessionStorage :: 10MB
  3. SQLite数据库:: 50MB-80MB(取决于设备)
  4. 使用插件调用的原生数据库::无限数据量
  5. IndexedDB :: 5MB.仍然存在.但非常错误,这里运行它的设备/操作系统列表

PhoneGap是否计划遵守Web存储标准,从而放弃WebSQL以支持indexedDB?如果是这样,一旦切换到indexedDB,我仍然可以使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)吗?

WebSQL正在慢慢被弃用.它的替代品是IndexedDB或SQLite.但是,最好的选择是SQLite或本机数据库(例如iOS上的核心数据)

在数据库大小有限且无法通过PhoneGap或Quota API进行扩展但可以访问文件系统的情况下,可以合理地假设"额外"数据可以存储在设备的文件系统或SD上卡?

这绝对是可能的.

  • 在Android上,您可以指定数据库的位置,从而将数据推送到外部数据库.
  • 在iOS上,您可以使用本机数据库调用在CoreData上存储数据,没有外部存储器.
  • 在所有操作系统的所有情况下,您可以创建一个平面数据库文件,如文本文件,将您的数据存储在键值列表中,然后在首次运行时将它们拉入您的应用程序.在这种情况下要小心内存管理.

我在答案中添加了如何编写SQLite和LocalStorage数据库的解释.

  • 出色的答案,谢谢.IndexedDB真的被弃用了吗?我一直很讨厌IndexedDB(以便与W3C联系). (2认同)

use*_*073 6

我能够在Android 4.0.4平板电脑上运行测试.它使用WebSQL(一个甚至不支持db.changeVersion的旧版WebSQL),它允许我填满整个硬盘(12GB与我的数据库).我不知道其他设备或SD卡如何工作.

在此输入图像描述