问题标签 [opendatabase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
152 浏览

android - Android & sqlite - 我必须在访问数据库之前创建和替换数据库吗?或者我可以打开数据库并查询吗?

我开始学习使用带有 SQLite 的 Eclipse SDK 的 android 开发。

如果我有一个现有的数据库,我在另一个应用程序等中手动创建了它。似乎所有示例,即使是那些引入现有数据库的示例,都被强制调用先创建一个空白数据库,然后用现有的数据库替换它D b。

为什么我不能简单地连接到它,并从现有数据中查询?

例如,使用“openDataBase”或类似的?有没有人有一个非常简单的例子......带有代码的示例项目?

0 投票
2 回答
3107 浏览

html - 测试本地数据库(websql)是否包含所需的新字段,如果没有则添加它们

我正在使用 PhoneGap 和 jQueryMobile 为 iOS 和 Android 构建一个跨平台的 HTML/Javascript 应用程序,并且我正在使用本地数据库 (localdatabase/websql) 的一个表中的一些新字段(除其他外)升级我的应用程序。

挑战 我想确保当数据库使用新表字段、现有用户数据扩展时,用户数据不会被删除或锁定在无法访问的旧版本数据库中。

背景: 我的应用程序有一个用户数据的本地数据库(收入和支出,加上一些设置)。这些数据需要持久化,当我开始时,要走的路是使用 HTML5 localDatabase 功能,因为它是持久的,并且可用于 iOS 和 Android 浏览器以及大多数桌面浏览器。

我正在使用一个名为 persistenceJS 的 Javascript 插件/库/thingy 来使处理 localdb 变得更容易一些。但我的问题并不是针对persistenceJS 的。

我正在开发一个新版本的应用程序,它使用了设置表中的一些新字段。因此,当这些用户下载并运行新应用程序时,它必须测试他们的设置表是否包含该字段,如果没有,则必须创建该字段。

我该如何做这个测试?我看到了两条思路:

  1. 使用数据库标签...在 openDatabase 函数中使用。这似乎被一些开发人员用来存储版本号。我对这个选项的问题是我只知道如何使用 openDatabase 打开一个数据库(如果不存在则创建一个新数据库),并在数据库尚不存在时专门运行回调。因此,如果我在标签中指定诸如“v2”之类的内容时打开表,它会创建一个新表吗?如果是这样,它会将旧表的值复制到新表中吗?

  2. 检查表字段是否存在...我可以使用 openDatabase 然后测试表字段是否存在。如果他们没有,我可以添加它们。每次用户打开他们的应用程序时都会运行测试,这似乎有点原始。

顺便说一句:我知道 webSQL/localDb 已被霸主弃用,但它仍然是我的工具,我现在想坚持使用它。

0 投票
1 回答
402 浏览

javascript - openDatabase 卡住了

我有一个 Blackberry Web Work 项目,这是我第一次进行移动编程。我想使用window.openDatabase创建缓存数据库但是有些奇怪,我在显示这个数据库之后发出警报,但它没有显示任何东西。

我还在这个函数之前和之后放置了警报,只在这个函数之前显示警报我尝试放置try catch错误,但它仍然不显示错误消息。

需要你的帮助

谢谢

这是我的简单代码:

0 投票
1 回答
4374 浏览

javascript - window.openDatabase 抛出 TypeError: Object[object DOMWindow] has no method 'openDatabase' on Android

我正在使用 Sencha Touch 2.0.1 并尝试使用以下方法打开 SQLite 数据库:

在 iPhone/IOS 模拟器上,这是可行的。在 Android 设备或模拟器上出现异常:

我正在使用 Sencha 构建原生应用程序(尽管我正在迅速失去信心......)所以我没有使用 PhoneGap。

Sencha 的包装创建和 AndroidManifest.xml 文件,但我看不到为

我不确定这是否是问题所在!

非常感谢任何帮助,因为这让我悄悄发疯。

编辑:这是 JS - 它是 Sencha Touch 生成的应用程序的一部分:

});

0 投票
3 回答
3956 浏览

javascript - Android 4.0.3,window.openDatabase 不起作用

我正在开发一个移动应用程序,为此我将 html5/js 与 Phonegap 一起使用。我使用 window.openDatabase(...) 将一些数据存储在本地数据库中。

这适用于 Android 2.x 但是当我尝试使用 Android 4.0.3 时,我发现以下错误: D/CordovaLog(698): Uncaught TypeError: Object [object DOMWindow] has no method 'openDatabase'

我的代码是:

你知道这是从哪里来的吗?我该如何解决?提前致谢。

亲切的问候,维。

0 投票
1 回答
286 浏览

javascript - Phonegap 不支持交易功能

我正在使用带有 phonegap 的开放数据库,并且在我桌面上的 Chrome 浏览器中一切正常,但是当我在我的 android 设备上运行它并单击调用 insertRecord() 的按钮时,它说不是用 eclipse 我得到错误

我的代码看起来像这样

我有一个指向它的链接 kzoomarketing.com/apps/oilapp/121/ 所以可以看到它。在计算器页面上,右上角的保存按钮记录所有字段并将它们填充到笔记页面中。它在网络浏览器中运行良好。

如果我将 js 函数更改为包装在 ondeviceready 中并运行它,我会收到上面提到的 log cat 错误。

谁能帮我让它在android设备上运行。

0 投票
1 回答
232 浏览

html - HTML5:访问大型结构化本地数据

总结: 有没有很好的 HTML5/javascript 选项可以选择性地从大型本地文件中读取数据块(假设最终转换为 JSON)?

我要解决的问题:
一些现有程序在本地输出大量数据。我想提供一个基于浏览器的交互式查看器,允许人们浏览这些结果。我可以控制数据的写出方式。我可以将它全部写在一个大文件中,但由于它非常大,我不能只在内存中读取整个内容。因此,我正在从我的 web 应用程序中寻找某种索引或类似 db 的访问。

对解决方案的思考:
1. 蛮力:HTML5 FileReader API 有一个不错的 slice() 方法用于随机访问。所以我可以在文件的开头写出某种索引,用它来查找其他存储对象的位置,并在需要时读取它们。我想在尝试实现这个丑陋的东西之前,我想问一下是否已经有 javascript 库可以做这样(或更好)的事情。

2. HTML5本地数据库。本质上,我正在寻找一个类似于 HTML5 openDatabase() 调用的方法,该调用将基于用户指定的本地文件打开(只读)到数据库的连接。据我了解,无法指定带有预加载数据库的文件。此外,即使有这样的黑客攻击,也不清楚本地文件格式是否跨浏览器相同。我已经看到了从 SQL 语句填充浏览器本地数据库的 phonegap 解决方案。我也可以这样做,但是我说的数据非常大(5-10GB):加载需要一段时间,而且这种重复似乎毫无意义。

0 投票
2 回答
186 浏览

javascript - 闭包和回调

我正在开发一个数据库函数,需要从 fetchAll 返回结果,这样我就可以在代码的其他地方使用它,但不知道该怎么做:

我想我错过了一些明显的东西。

谢谢

安东尼

0 投票
2 回答
3034 浏览

android - SECURITY_ERR:openDatabase 上的 DOM 异常 18

我有一个基于 Web 的 Android 应用程序,它使用 WebSQL 进行存储。出于某种原因,在某一点调用openDatabase(响应按钮单击)会导致DOMException带有消息的 a "SECURITY_ERR: DOM Exception 18"

请注意,我没有使用 PhoneGap。

我在这里问的主要问题是: DOMException 18 on 的可能原因是什么openDatabase

更多细节:仅当数据库尚不存在时才会发生此异常。如果它已经存在,它将按预期工作。进行调用的函数openDatabase在应用程序的另一部分中使用并且工作正常。

到目前为止我已经尝试过

  • 减少数据库的大小 - 应该不是问题,因为它是由应用程序的另一部分创建的。
  • 我已经检查了外部存储权限 - 再次,应该不是问题。
  • 我在某处读到插入的 USB 电缆可能会导致此问题 - 在这种情况下不是导致它的原因。

编辑: 这是命令的样子:

0 投票
0 回答
331 浏览

webkit - 在 TideSDK 中为 Webkit 设置 enable-universal-access-from-file-uris?

我可以在 TideSDK 中为 Webkit 设置 enable-universal-access-from-file-uris=true 吗?从 TideSDK 访问 openDatabase 会导致 SECURITY_ERR: DOM Exception 18 错误。