首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >window.openDatabase()和window.sqlitePlugin.openDatabase()函数之间的区别?

window.openDatabase()和window.sqlitePlugin.openDatabase()函数之间的区别?
EN

Stack Overflow用户
提问于 2014-06-27 10:28:54
回答 1查看 14.5K关注 0票数 9

使用Cordova版本3.x和Android版本2.x到4.x。

我想知道:

  1. 我的理解是,在默认情况下,所有android设备都有一个sqlite程序/界面,用于创建sqlite数据库吗?
  2. 以上两个数据库函数调用是否都在设备中创建了sqlite数据库?
  3. 如果上面的答案是no,那么上述函数调用创建的是什么类型的数据库?
  4. 如果答案是yes,那么window.sqlite.openDatabase()函数包装器是否围绕window.openDatabase()
  5. 调用所创建的数据库是否持久?也就是说,在关闭和重新打开cordova打包的应用程序之后,数据是否可用?
  6. 以上两种方法可以创建的数据库大小是否有最大值?
EN

Stack Overflow用户

回答已采纳

发布于 2014-06-27 13:16:43

  1. WebSQL (window.openDatabase)是一种被废弃的web标准。但是它在大多数桌面和移动浏览器中都是可用的。大多数浏览器使用SQLite实现规范。在安卓系统中,浏览器和WebViews支持WebSQL,以及最初版本的本地存储和会话存储,以及自KitKat以来的IndexedDB。

然后,我们可以让Android独立地支持从Java中使用SQLite作为其主要的持久性机制之一。

科多瓦很特别。该应用程序运行在WebView中,因此应该使用WebSQL,但在安卓系统中,插件会覆盖API并将其植入窗口对象,这些新函数可能默认为不同的实现,而不是浏览器API。

因此,在Cordova应用程序中,一旦加载,当您调用openDatabase时,实际上调用的是Cordova放置在windows对象中的一个新函数,该函数覆盖了旧的标准函数。来自科多瓦博士

有些设备已经提供了此规范的实现。对于这些设备,使用内置支持,而不是用Cordova的实现替换它。对于不支持存储的设备,Cordova的实现应该与W3C规范兼容。

这个引号是模棱两可的,不再存在于文档中。对于“内置”而言,它们指的是WebView中内置的WebView支持。我链接的文档是旧的,是2.x版本的。在这些版本中,Cordova只有在WebView不支持WebSQL (我认为从未发生过)或者设备受bug 16175影响时才默认使用自定义实现。默认实现包括使用使用Java创建Storage.java数据库的SQLite插件。我一直在阅读最新消息来源,在较新的(3.x)版本上,他们似乎总是在使用WebSQLite。

  1. 是的,两者都创建了一个DB文件,但其路径将是不同的。实际上,您可以从应用程序中的JavaScript代码和Java代码中打开相同的DB。
  2. 同样类型的数据库。SQLite是一个管理文件结构的本地C层。实际上,您也可以使用本机Android应用程序中的本机C API。
  3. Cordova / Phonegap使用内置支持的SQLIte (在Android中是如此)。
  4. 是的,他们呆在那里。
  5. 是的,是有限度的。有关更多信息,请访问这里
票数 12
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24449640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档