67

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

  • IE10 - 索引数据库 - 最大 1GB
  • FireFox - indexedDB - 无限制
  • Safari - WebSQL - 最大 50MB
  • Chrome - IndexedDB(或 Web SQL) - 无限制(使用 HTML5 Quota API ref1ref2
  • Opera - WebSQL(直到他们切换到 webkit?) - 无限制

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

  • WebSQL - Android、黑莓、iPhone 和 webOS
  • 本地存储- 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 卡上?

4

3 回答 3

95

我对 PhoneGap 将使用什么数据库的理解准确吗?

是的。PhoneGap 可以使用 LocalStorage、SessionStorage 或 SQLite 数据库。您也可以选择使用 PhoneGap 通过插件连接到设备原生类,并传递原生类数据,然后它将存储在设备上。

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

  1. 本地存储 :: 10MB
  2. 会话存储 :: 10MB
  3. SQLite 数据库 :: 50MB-80MB(取决于设备)
  4. 使用插件调用的本地数据库 :: 无限数据量
  5. 索引数据库 :: 5MB。依然存在。但是非常有问题,这里有一个运行它的设备/操作系统列表

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

WebSQL 正在慢慢被弃用。它的替代品是 IndexedDB 或 SQLite。然而,对您来说最好的选择是 SQLite 或本机数据库(例如 iOS 上的 Core Data)

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

这绝对是可能的。

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

我在答案中添加了关于如何为 SQLite 和 LocalStorage 数据库进行编码的说明

于 2013-04-04T13:15:33.633 回答
6

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

在此处输入图像描述

于 2013-04-03T13:20:40.917 回答
3

索引数据库 -

  • 它与许多类型的移动操作系统和版本不兼容
  • 它仅与非常特定版本的移动操作系统兼容
  • 开发人员不能将 SQL 与 IndexedDB 一起使用。SQL 语句可用于 SQLite 和 WebSQL
  • 大多数开发人员都尽可能地避免使用 IndexedDB

WebSQL -

  • 它已被 W3C 弃用,这意味着它不再被维护或开发
  • 它需要另一个名为 Polyfill 的插件,以使移动应用程序能够与流行的移动操作系统(如 Google Android 和 Apple iOS)一起使用

SQLite -

  • 它获得了谷歌的奖项
  • SQLite 有它的官方网站。IndexedDB 和 WebSQL 没有
  • 在 Google 上,SQLite 返回 180 万条结果。WebSQL 返回的结果略少于 700K,IndexedDB 返回的结果为 282K。
  • 开发者可以在 SQLite 中使用常用的 SQL 语句。

如果你想要一个关于 SQLite 的快速教程

使用 Android 和 Phonegap 存储 SQLite 数据库

于 2014-09-13T21:14:30.180 回答