使用 Cordova 版本 3.x 和
Android 版本 2.x 至 4.x。
我想知道:
- 我的理解是否正确,所有 Android 设备默认都有一个用于创建 sqlite 数据库的 sqlite 程序/接口?
- 上述两个数据库函数调用是否在设备中创建了 sqlite 数据库?
- 如果上面的答案是no,那么上述两个函数调用创建什么类型的数据库?
- 如果答案是yes,那么就是
window.sqlite.openDatabase()
函数包装器window.openDatabase()
?
- 调用创建的数据库是否持久?即关闭并重新打开cordova打包的应用程序后数据是否可用?
- 上述两种方法创建的数据库大小是否有最大限制?
-
WebSQL http://www.w3.org/TR/webdatabase/ (
window.openDatabase
) 是已弃用的 Web 标准。但它在大多数桌面和移动浏览器中都可用。大多数浏览器使用 SQLite 实现该规范。在Android中,浏览器和WebViews支持WebSQL,以及第一个版本的本地存储和会话存储,以及自KitKat以来的IndexedDB。
然后,Android 独立支持从 Java API 中使用 SQLite 作为其主要持久性机制之一。
科尔多瓦很特别。该应用程序在 WebView 中运行,因此它应该使用 WebSQL,但在 Android 中,插件会覆盖 API 并将新函数植入到窗口对象中,这些新函数可能默认为不同的实现,而不是浏览器 API。
因此,在 Cordova 应用程序中,一旦加载,当您调用openDatabase
您实际上是在调用 Cordova 放置在 windows 对象中的一个新函数,该函数覆盖了旧的标准函数。来自科尔多瓦文档 http://cordova.apache.org/docs/en/2.4.0/cordova_storage_storage.md.html#Storage:
一些设备已经提供了此规范的实现。对于这些设备,使用内置支持,而不是用 Cordova 的实现替换它。对于没有存储支持的设备,Cordova 的实现应该与 W3C 规范兼容。
该引用含糊不清,不再出现在文档中。对于“内置”,它们意味着 WebView 中内置的 WebSQL 支持。我链接的文档很旧,来自 2.x 版本。在这些版本中,Cordova 仅在 WebView 不支持 WebSQL(我认为这从未发生过)或者设备受到错误 16175 http://code.google.com/p/android/issues/detail?id=16175。默认实现包括使用Storage.java
使用 Java API 创建 SQLite 数据库的插件。我一直在读最新来源 https://github.com/apache/cordova-android/tree/master/framework在较新的 (3.x) 版本上,他们似乎总是使用 WebSQLite。
是的,两者都会创建一个数据库文件,但它的路径会不同。事实上,您可以从应用程序中的 JavaScript 代码和 Java 代码打开同一个数据库。
相同类型的数据库。 SQLite 是管理文件结构的本机 C 层。事实上,您还可以从本机 Android 应用程序使用此本机 C API。
Cordova / Phonegap 使用内置支持中的 SQLite(如果可用)(在 Android 中是这样)。
是的,他们留在那里。
是的,有一个限制。查看here https://stackoverflow.com/questions/3482635/what-is-a-maximum-size-of-sqlite-database-on-android了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)