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

时间:2012-10-01 15:36:30

标签: javascript html5 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');
        }
    }
}

3 个答案:

答案 0 :(得分:8)

实际上,您使用DELETE sql命令从数据库中删除记录。例如:

tx.executeSql('DELETE FROM counterCombos WHERE comboid = ?', [comboid], success, error);

processSelectFromReverse可以修改为包含tx作为输入,如

processSelectFromReverse(results,suggRay,tx) 

答案 1 :(得分:0)

Web SQL has been dropped from the HTML5 workup现在差不多2年了,不受支持。 Web StorageIndexed DB取而代之。

删除对象的语法:delete object;是正确的。它在JavaScript中并不经常使用,但我已经使用过它,这是正确的用法。

使用网络存储(通常称为本地存储),您可以实现已经内置的方法localStorage附带的removeItem(item key)对象。

您可以在网络存储的上述链接中查看更多内容,或者转到here for a tutorial

答案 2 :(得分:0)

如果您关心的是IOS或Android,那么制作一个本地包装的应用程序将允许您创建一个javascript界面​​。从这个界面你可以访问(为Android)sqlite并创建一个很好的,query0able解决方案。缺点是这需要人们下载你的应用程序而不是访问一个站点。

http://caniuse.com/indexeddb

indexeddb支持增长相当缓慢。使用适当的编码风格,您可以使用本地存储(如上面的注释中所述)具有相当可观的速度。