- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
检查这个例子:
var db = openDatabase( 'test.db', 1, '', 2*1024*1024 );
db.transaction(function(tx) {
var success = function(tx,results) {
console.log( results );
};
var error = function(tx,results) {
console.log( results );
};
// clean previous state
tx.executeSql( 'DROP TABLE IF EXISTS products', [], success, error );
tx.executeSql( 'CREATE TABLE products ( id INTEGER NULL PRIMARY KEY, name TEXT )', [], success, error );
tx.executeSql( 'CREATE UNIQUE INDEX name ON products( name )', [], success, error );
tx.executeSql( 'INSERT INTO products( name ) VALUES ( "Lechuga" )', [], success, error );
tx.executeSql( 'INSERT INTO products( name ) VALUES ( "Naranja" )', [], success, error );
tx.executeSql( 'INSERT INTO products( name ) VALUES ( "Naranja" )', [], success, error );
tx.executeSql( 'INSERT INTO products( name ) VALUES ( "Tomate" )', [], getAll, error );
} );
function getAll(tx, results) {
db.transaction(function(tx) {
tx.executeSql( 'SELECT * FROM products', [], function(tx, results) {
console.assert( results.rows.length === 0 ) // false, why?
} );
} );
}
jsfiddle 链接:http://jsfiddle.net/aBx7E/6/
触发唯一约束的insert查询,不停止让websql继续执行下一个查询。所以在过程结束时你将有 4 行,这是没有意义的,因为如果我在事务下,当触发约束错误时,所有先前对表的更改都将被丢弃。
为什么Websql不触发回滚机制?
最佳答案
WebSQL 事务中的错误处理程序需要为要中止的事务返回一个非假值。在这种情况下,错误处理程序仅调用 console.log,这实际上允许事务继续进行。
如果将其作为错误处理程序:
var error = function(tx,results) {
console.log( results );
return true; // added a non-false return value
};
然后,当违反唯一性约束时,事务应该按预期中止。
(我相信你现在已经想通了,但我遇到了同样的问题,看到了这个问题,没有得到答案,不得不自己想办法。)
编辑:因为我没有评论权限,这在 http://www.w3.org/TR/webdatabase/#processing-model 中有概述。 ,第 6 步。到目前为止,我不需要手动回滚任何查询或更改我的查询语句来正确中止事务。可能存在实现差异,因为我一直在桌面 Safari 上使用 Web SQL。
关于javascript - WebSQL 不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225320/
我正在尝试使用当前日期和时间来执行 INSERT 和 SELECT 语句,但数据没有插入到 WebSQL 中。下面是我的代码: CREATION.. myDb.transaction(function
这是我在 stackoverflow 上的第一个问题。我尝试在这里和 Google 上搜索方法: 将文件转换为blob,将其保存在WebSQL中,然后从数据库中选择它并使用window.URL.cre
我正在使用以下语句在 Chrome 中创建一个 WebSQL 表: 'CREATE TABLE IF NOT EXISTS recs(id, fname,lname,email,country,com
所以我有一个 Javascript 类来包装和管理对 WebSQL 数据库系统的访问。 可以找到该类的代码:https://jsfiddle.net/dsct89kv/ 现在测试一下我正在使用的 fu
An online tutorial显示此交易: db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS
我在循环方面遇到问题。我想实现以下步骤: 从网上下载一个巨大的 JSON 文件,然后我想循环遍历所有对象,并为每个对象(产品)从网上下载图像(使用 AJAX 调用)并填充 property obj.p
我正在尝试在 Phonegap 中创建一个应用程序并使用 WebSQL 创建本地数据库。我有一张名为“星星”的表...有很多 Actor /明星...在选择一颗星星的详细信息时,我想向其他相关明星(例
似乎无法弄清楚为什么这个简单的语句不起作用 tx.executeSql("INSERT INTO history SELECT * FROM scan"); 如果表历史记录为空,则它可以正常工作,这没
检查这个例子: var db = openDatabase( 'test.db', 1, '', 2*1024*1024 ); db.transaction(function(tx) { va
你好 friend ,我面临一个奇怪的问题。我开发 PHP 桌面应用程序, 我正在使用 websql 数据库。当我将数据提交到用户表中时 数据提交成功。但是当我提交到另一个表时数据却没有 提交的表结构
我正在尝试使用 WebSQL 和 JavaScript 执行登录功能。我写了一个函数,它接受一个参数(email)。该函数应该在数据库中搜索现有电子邮件,然后它应该返回一个警告,说明该电子邮件是否存在
我正在尝试使用复合主键在 websql 中创建一个数据库,但我似乎无法弄清楚此语句有什么问题: tx.executeSql('CREATE TABLE IF NOT EXISTS groepleden
我正在使用 WebSQL 和 IndexedDB 开发一个 Web 应用程序。 IndexedDB 在支持它的浏览器中运行良好,我的 WebSQL 实现在大多数浏览器中都可以运行,但是在 Androi
你好,我有一个工厂,它提供了与数据库一起使用的函数,它看起来像这样: .factory('DBwork', function () { var db = openDatabase("...");
这个问题已经有答案了: JavaScript closure inside loops – simple practical example (45 个回答) 已关闭 7 年前。 为什么我无法在事务中
我有以下代码来选择一行。当我用 getRecords("Peter Sam"); 调用函数时显示一条记录。但是,如果我只是通过 getRecords("Peter");它说“没有结果”。 getR
我在 iOS 上有一个使用 WebSQL 数据库的 PhoneGap 应用程序。在某些地方,我读到存储容量是 5MB,而在其他地方,我读到它是 50MB,有人可以帮我解决这个问题吗?我还计划在数据库中
https://www.w3.org/TR/webdatabase/#sqlstatementerrorcallback 看到这里sql语句错误回调定义了返回类型boolean: [Callback=
我正在使用 Web SQL 数据库构建应用程序。我记得在某处看到有一种方法可以使用 Google Chrome 来检查 Web SQL 数据库, 但是我找不到这样做的正确方法。 最佳答案 您可以使用
让我澄清一下,当我说移动网络应用程序时,我指的是旨在跨不同移动平台运行的网络应用程序,而不是访问互联网获取数据的 native 移动应用程序。 所以我正在阅读一些内容,看看这些移动网络应用程序如何在客
我是一名优秀的程序员,十分优秀!