据我所知,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');
}
}
}
答案 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 Storage和Indexed DB取而代之。
删除对象的语法:delete object;
是正确的。它在JavaScript中并不经常使用,但我已经使用过它,这是正确的用法。
使用网络存储(通常称为本地存储),您可以实现已经内置的方法localStorage
附带的removeItem(item key)
对象。
您可以在网络存储的上述链接中查看更多内容,或者转到here for a tutorial。
答案 2 :(得分:0)
如果您关心的是IOS或Android,那么制作一个本地包装的应用程序将允许您创建一个javascript界面。从这个界面你可以访问(为Android)sqlite并创建一个很好的,query0able解决方案。缺点是这需要人们下载你的应用程序而不是访问一个站点。
indexeddb支持增长相当缓慢。使用适当的编码风格,您可以使用本地存储(如上面的注释中所述)具有相当可观的速度。