标签: web-sql

Web SQL数据库+ Javascript循环

我试图解决这个问题,但似乎无法自己...
我正在玩Web SQL数据库,我无法使用循环来正常工作.
我用:

for (var i=0; i<=numberofArticles-1; i++){  
    db.transaction(function (tx) {  
    tx.executeSql('INSERT INTO LOGS (articleID) VALUES (?)',  [i]);
  });
 };
Run Code Online (Sandbox Code Playgroud)

我只得到了5个......我没有得到增量i值.
任何人都可以建议我做错了什么以及我应该考虑什么?

javascript sql html5 loops web-sql

7
推荐指数
2
解决办法
7065
查看次数

如何使网站脱机使用

即使用户清除缓存和cookie,我也想让我的网站脱机.有可能吗?我也在处理数据库.是否可以脱机处理数据库?

offline web-sql

7
推荐指数
2
解决办法
6121
查看次数

刷新页面时HTML 5 Web SQL数据库事务提交或回滚

至于写在Safari浏览器客户端存储和离线应用程序编程指南,回滚HTML 5的Web SQL数据库事务通过返回的错误回调提供的回调函数做真实交易executeSql方法:

每个查询错误处理回调非常简单.如果回调返回true,则回滚整个事务.如果回调返回false,则事务继续,就好像什么都没有出错一样.因此,如果您正在执行可选的查询 - 如果该特定查询的失败不应导致事务失败 - 您应该传入一个返回false的回调.如果查询失败导致整个事务失败,则应传入一个返回true的回调.

例如,如果我有以下事务(假设'users'表在'username'字段上有一个UNIQUE约束,并且用户'test'已经存在 - 我试图再次插入,这会导致约束错误) :

database.transaction(function(transaction) {
    transaction.executeSql(
        "INSERT INTO users (username) VALUES('test')",
        null,
        dataCallback,
        errorCallback
     );
});

function errorCallback() {
    return true; //this causes the rollback
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 如果我必须在事务中包含许多操作(例如,我必须使用ajax将一些数据发送到服务器并等待响应等),并且用户在响应到达之前重新加载页面(这意味着errorCallback将不会被调用),交易会被提交还是会失败?

  2. 有谁知道如何手动回滚Web SQL事务?例如,如果我想根据ajax调用的结果回滚事务,怎么办呢?我应该运行包含错误的查询以确保调用错误回调吗?

谢谢.

javascript database html5 transactions web-sql

7
推荐指数
1
解决办法
9739
查看次数

IE是否支持indexedDB,WebSQL或类似于SQLite的数据库?

对于Chrome,我可以使用IndexedDB和WebSQL,对于Firefox,我可以使用IndexedDB,IE呢?我开发了一个使用WebSQL的应用程序,它可以在桌面Chrome和Safari,iOS Safari和Android浏览器上正常运行.接下来,我想将它移植到Desktop Firefox和IE.我正在考虑使用IndexedDB,但发现IE并不真正支持它.我有什么选择?

sqlite internet-explorer web-sql indexeddb

7
推荐指数
1
解决办法
1万
查看次数

我可以在浏览器ui线程和Web工作线程中安全地使用html5中的本地存储

我一直在尝试在基于webkit的浏览器中使用web sql数据库api.我一直在主ui线程web worker中使用async api.两个线程都访问同一个数据库(你知道这是sqlite的继承)

一切都表现良好,但偶尔交易丢失或一次交易失败,似乎是时机/竞争条件.似乎对底层sqlite数据库的访问不是线程安全的.

多一点背景.我的Web工作者只是对一个表执行查询,该表可能从主ui线程中插入了一条记录.

我想知道是否实际记录了哪些本地/网络存储可以安全地从ui线程和Web工作线程访问?我已经读过某个地方,indexeddb api是线程安全的,但是这对我现在没有帮助,因为浏览器支持它对于我所针对的浏览器来说很少/不存在(至少我是这么认为的 - 我从http获取我的信息)://caniuse.com)

任何见解都会感激不尽

javascript web-worker local-storage web-sql

6
推荐指数
1
解决办法
1650
查看次数

HTML/JS作为本地SQLite数据库的接口

我正在编写一个非常简单的数据库应用程序,我想在本地存储(而不是查找远程数据库).我喜欢用于设计界面的HTML/Javascript,而且它们是跨平台的(每个人都有浏览器!),所以我真的想把网页写成前端.不应涉及客户端/服务器交互 - 我只希望用户能够使用浏览器而不是本机程序与数据库进行交互.

但是,我可以看到从浏览器访问数据库的唯一方法是使用WebSQL或IndexedDB之类的东西.但是,这两者都抽象出了管理数据库文件本身的过程,并将其存储在某个用户设置中.我想将数据库文件本身与应用程序一起分发.

简而言之:有没有办法使用HTML/Javascript来修改本地SQLite数据库文件?或者HTML不是我应该用于此类应用程序的工具?

编辑: 可能相关

html javascript sqlite web-sql

6
推荐指数
1
解决办法
2万
查看次数

跨浏览器HTML5存储库

我有一个要求,当互联网不可用时,应该在本地存储.它应该以跨浏览器兼容的方式处理它.现在我知道有很多选项可以在本地存储数据(indexedDB,WebSQL,localStorage).我真正想要的只是一个统一的API.我不想检测和编写多个存储引擎的代码.

我真正关心的是给出一个密钥,并提供数据,它应该在浏览器会话/崩溃中持久存在.

经过大量的谷歌搜索,我实际遇到的唯一的图书馆是persisJS:

http://pablotron.org/?cid=1557

但它大约是4岁半.有没有比这更好或更可靠和更新的东西?

jquery html5 local-storage web-sql indexeddb

6
推荐指数
1
解决办法
7228
查看次数

如何在Web SQL数据库中插入多行?

我有一个包含多行数据的JavaScript对象,我想将其插入到Web sql数据库中.这是我的代码的样子.

for(i in rows)
{
    (function(row){
        db.transaction(function(tx) {
            tx.executeSql("INSERT INTO my_table (id, name, parent_id) VALUES (?, ?, ?)",
                [ row.id, row.name, row.parent_id ], onSuccess, onError
            );
        });
    })(rows[i]);
}
Run Code Online (Sandbox Code Playgroud)

我对此的疑问是:

  1. 这可以通过在内部移动外环来完成db.transaction.它会更好吗?为什么?
  2. 是否可以在单个查询中添加多行,如单个MySQL中的多个值INSERT?或者我不应该担心这个.

javascript html5 web-sql

6
推荐指数
1
解决办法
6131
查看次数

WebSQL对浏览器的支持不断增加。它的未来是什么?

我已经四处查看,发现WebSQL的未来似乎有些艰难。

一方面,由于实际上每个实际实现都只使用SQLite3,因此它显然被广泛视为一种解决方案,因为该规范本身大量借鉴了SQLite3的设计语义,如果专门使用SQLite3 将非常棘手。。

另一方面,自2017年2月起,所有主流浏览器似乎都支持它(http://caniuse.com/#search=websql)-Chrome已经有很长的历史了,它是在IE11 Edge 14中引入的,Firefox 50和Safari10。移动支持似乎也在积极发展(现在,只有注释说明它在某些三星手机上由于某些原因无法使用)。

IndexedDB背后的理论确实是有道理的:这是一个崭新的标准,不与任何现有库绑定,供应商可以设计自己的实现,进行竞争并避免供应商/库锁定。但是,我陷入了IndexedDB最不利的方面之一:由于实现开销,其抽象设计的性能似乎绝对是灾难性的。

http://scaljeri.github.io/indexeddb-vs-websql/v2.0.0/index.html是一键式IndexedDB-vs-WebSQL决战。我将其设置为10000个项目(一个相当适中的数字),并尝试使用我的ThinkPad T43-具有2GB RAM的单核2GHz PentiumM。

首先,除了运行Chromium之外,什么都没有执行,大多数选项卡都已挂起,其余选项卡未使用任何CPU:

在此处输入图片说明

在IndexedDB的整个“插入”时间内,该选项卡使用100%CPU,并且系统通常无法使用。(我可以浏览一下-屏幕重绘的速度确实很慢-但我并不是为了获得准确的基准)。

当我有很多其他事情发生时,我也碰巧在使用该选项卡,并且系统恰好要交换死机(在这台特定的机器上发生了很多事情):

在此处输入图片说明

然而,在整个过程中,WebSQL的性能令人难以置信。即使在系统进行大量交换(到较慢的HDD)时,插入一排行也需要三秒钟,并且系统I / O受到很大影响。(注意:默认情况下,我知道SQLite3会将所有数据强制刷新到磁盘上以确保完整性,但是我不确定Chrome的实现是否为WebSQL禁用了此选项。)

https://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/(自2015年9月起)完成的基准测试似乎与我在此处介绍的内容基本一致;它表明,在2013年的Macbook Air上,IndexedDB的性能明显比WebSQL差。

考虑到这些考虑因素,我有两个问题。

  1. WebSQL 作为Web标准的实际未来是什么?SQLite3可以在任何地方(它是ANSI C)运行,并且WebSQL似乎得到了广泛支持(?)。

    我的问题本来是要专门询问有关Chrome扩展程序的支持(请参阅下一点),但是现在我考虑了一下,如果我想要替代localStorage(及其5MB的限制),我想使用WebSQL作为主要解决方案,而很少(如果曾经)使用过IndexedDB或localStorage作为后备。通过这种方法,我成功的机会是什么?

  2. 浏览器供应商是否有可能很快放弃对网站和/或扩展的WebSQL支持?

    我正处于Chrome扩展程序的设计初期,该程序需要存储可能大量的信息-它将管理历史记录/书签/等,这些数据将永远增长而永不缩减。我要在所有计算机上使用此扩展,包括上面显示的基准测试中的T43。

    在我看来,这是WebSQL还是什么都没有;我不同意IndexedDB。如果WebSQL看起来将要消失,我将在Go或类似的服务器上制造一个小型应用服务器,然后简单地与之交谈。

    同样,如果有一天WebSQL从Chrome随机“离开”,即使Web支持消失了,对它的扩展支持也将继续吗?

web-standards google-chrome-extension web-sql deprecation-warning

6
推荐指数
0
解决办法
1574
查看次数

WebSql iOS13支持已删除,迁移前的替代解决方案

本周发布的新iOS 13不再支持WebSQL(机器人Safari和Chrome)。我看到最好的解决方案将迁移到indexedDB,但是我需要立即使用它。由于无法从电话降级,因此有人可以快速解决此问题吗?

在此处输入图片说明

safari google-chrome ios web-sql ios13

6
推荐指数
1
解决办法
1330
查看次数