标签: web-sql

使用Web SQL数据库在Phonegap应用程序中存储大量数据的替代方法?

问题陈述 :-

1)该应用程序是在Phonegap中开发的,用于支持多种设备(Android,iOS等)

2)由于数据量大,目前使用Web SQL数据库

3)应用程序必须在不久的将来接收更新的数据并更新其数据库

对于上面提到的应用程序,请建议我另一种存储到Web SQL数据库的方法.

据我所知,Web服务可以放在服务器端,JSON可以用来获取和更新当前的SQL数据库.(在我的生活中没有使用过JSON,如果我错了,请纠正我).

(要么)

为phonegap编写一个插件,使用一些本机调用将数据存储在设备中.(这里的知识也有限).但是它会在基于Android和iOS的多种设备上运行吗?

(要么)

有人可以建议我如何在不使用与html5相关的东西的情况下实现这一目标,以便即使在支持普通的非html5的浏览器上,我也可以浏览手机屏幕的网络资源吗?

android ios web-sql phonegap-plugins cordova

4
推荐指数
1
解决办法
4841
查看次数

使用javascript从web sql中删除结果集中的行

我明白web sql的结果集不是一个数组,更像是一个对象?我正在循环一个结果集并加快速度我想在找到它后删除一行.我试过"删除"和"拼接",前者什么也没做,后者抛出错误.这是我要做的一件事,请注意第18行的删除:

function selectFromReverse(reverseRay,suggRay){
    var reverseString = reverseRay.toString();
    db.transaction(function (tx) {  
        tx.executeSql('SELECT votecount, comboid FROM counterCombos WHERE comboid IN ('+reverseString+') AND votecount>0', [], function(tx, results){
            processSelectFromReverse(results,suggRay);
        }); 
    }, function(){onError});
}

function processSelectFromReverse(results,suggRay){
    var i = suggRay.length;
    while(i--){
        var j = results.rows.length;
        while(j--){
            console.log('searching');
            var found = 0;
            if(suggRay[i].reverse == results.rows.item(j).comboid){
                delete results.rows.item(j);
                console.log('found');
                found++;
                break;
            }
        }       
        if(found == 0){
            console.log('lost');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript html5 web-sql

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

如何在Chrome开发工具 - > Web SQL数据库中查看整列内容

Chrome开发工具支持查询Web sql数据库,但结果显示在一个表格中,该表格使用省略号切断了太长的字符串(...)

如何查看整列内容?由于截止,ctrl-a selection + copy不起作用

google-chrome google-chrome-devtools web-sql

4
推荐指数
1
解决办法
937
查看次数

javascript/WebSQL:如何取消查询

我遇到这种情况,我执行复杂的查询需要一些时间.但有时我不再需要结果,所以我想取消它.这可能吗?这是基本结构:

db.transaction(
    function(tx) {
        tx.executeSql('SELECT * FROM ...JOIN ...', [a,b,c], callback) ;
    } 
    , function(err) { .... }
    , function() { /* transaction completed */ }
) ;
Run Code Online (Sandbox Code Playgroud)

javascript sql web-sql

3
推荐指数
1
解决办法
447
查看次数

为什么Cordova使用的Web SQL API已被弃用?

如果您在此处查看:http://cordova.apache.org/docs/en/3.3.0/cordova_storage_storage.md.html#Storage,该页面清楚地显示正在使用的Web SQL数据库API.

此Web SQL数据库API不再像以下所述进行维护:http://dev.w3.org/html5/webdatabase/

此外,并非所有平台都提供适用于Web SQL Database API的PhoneGap解决方案.另一方面,他们还提到支持indexedDB,但是在不同的设备集上.

为什么他们破坏了跨平台规范并且还使用了被弃用的API?

web-sql indexeddb cordova

3
推荐指数
1
解决办法
2749
查看次数

IndexedDb上的WebSQL语法

我有一个使用WebSQL的应用程序。我也想支持IndexedDB(对于不支持WebSql的浏览器)。是否有任何使用sql语法但可在后台与indexedDB / LocalStorage一起使用的库?

我不想更改所有查询和功能。

我发现的所有库都使用IndexedDb语法并支持WebSql。(不是我所需要的)。

谢谢 :)

javascript syntax html5 web-sql indexeddb

3
推荐指数
2
解决办法
1307
查看次数

使用唯一键增加表中的值会导致约束错误

我创建了一个表

CREATE TABLE `tests` (`num` INTEGER UNIQUE, value VARCHAR(255))
Run Code Online (Sandbox Code Playgroud)

我向其中添加两行:

INSERT INTO `tests` VALUES(0, "a")
INSERT INTO `tests` VALUES(1, "b")
Run Code Online (Sandbox Code Playgroud)

我现在的目标是插入num= 0 的行,但为了能够做到这一点,我需要上移这两行上的索引。

当我执行时:

UPDATE `tests` SET `num` = `num` + 1 WHERE `num` >= 0
Run Code Online (Sandbox Code Playgroud)

我收到错误:

由于约束失败而无法执行语句(19 约束失败)

我的猜测是,它正在增加每一行,当它通过将其设置为 来增加第一行时1,已经有一行带有numof 1,因此失败。

在标准代码中,这可以通过向后迭代集合来解决,在 Sqlite 中有没有办法做到这一点?有没有不同的方法来解决这个问题?

sql sqlite web-sql

3
推荐指数
1
解决办法
1075
查看次数

链接承诺时 WebSQL 错误“不允许执行 SQL”

我知道标题很长,但老实说,我无法为我的具体案例想出更好的标题(欢迎提出建议)。所以基本上我记下了这个 JSFiddle(一个简化版本)我面临的问题。我正在使用 AngularJS 的$q.all方法来收集依赖于查询结果的承诺数组:

db.transaction(function(tx) {
    $q.all(fn(tx)).then(function(a) {
        console.log("Result:", a);
    });
});
Run Code Online (Sandbox Code Playgroud)

wherefn是一个返回承诺数组的函数。
在上述情况下,一切都按预期工作,并且结果(解决承诺的 sql 查询结果数组)console.log正确生成。
但是,如果我包装$q.allthen另一个延迟对象的方法中,如下所示:

db.transaction(function(tx) {
    fn2(tx).then(function(tx) {
        $q.all(fn(tx)).then(function(a) {
            console.log("Result:", a);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我得到的错误:Error: Failed to execute 'executeSql' on 'SQLTransaction': SQL execution is disallowed.
fn2的是,仅仅是返回一个承诺,其解析为一个函数tx对象本身)。
我是否偶然发现了一个常见的陷阱?我搜索了但没有想出任何东西。干杯。

javascript promise web-sql angularjs

3
推荐指数
1
解决办法
2722
查看次数

在调试iOS应用程序时,Web Inspector中的WebSQL数据库文件夹在哪里

我有一个使用WebSQL数据库的应用程序.我可以在Chrome中的计算机上运行应用程序时调试数据库.但是当我尝试在我的iPod上调试它(连接到我的计算机,使用Safari的Web Inspector)时,没有WebSQL文件夹Resources.只有Local StorageSession Storage.在哪儿WebSQL database文件夹去了?我使用的是OS X 10.9.5,Safari 7.1,iOS 8.3.

safari ios web-sql

3
推荐指数
1
解决办法
1460
查看次数

Ionic 2 - 从存储值获取令牌并在HTTP请求之前设置Header

我在登录后使用该ionic/storage包来存储api_tokenfor用户,因此我可以使用唯一令牌与API进行交互.

我面临的问题是我需要获取值,通过storage.get该值返回一个promise并导致我想要设置的标题没有及时设置.

我需要返回一个RequestOptions实例,但无法弄清楚如何添加我从promise中检索到的头.添加与localStorage同步的头文件在测试时工作正常,因此问题必须是异步执行.

createAuthorizationHeader(headers: Headers) {
    // this does add the header in time
    localStorage.setItem('api_token', 'some token');
    headers.append('Authorization', 'Bearer ' + localStorage.getItem('api_token'));

    // this does not add the header in time
    return this.storage.get('api_token').then((value) => {
        headers.append('Authorization', 'Bearer ' + value);
    });
}

getHeaders(path): RequestOptions {
    let headers = new Headers({
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    });

    if(!this.isGuestRoute(path)) {
        this.createAuthorizationHeader(headers);
    }

    return new RequestOptions({ headers: headers });
}

get(path: string) {
    return this._http.get(this.actionUrl + path, this.getHeaders(path)) …
Run Code Online (Sandbox Code Playgroud)

http web-sql ionic2 angular

3
推荐指数
1
解决办法
3849
查看次数