4

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');
        }
    }
}
4

3 に答える 3

8

実際には、DELETEsqlコマンドを使用してデータベースからレコードを削除します。例えば:

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

processSelectFromReversetx次のような入力として含めるように変更できます

processSelectFromReverse(results,suggRay,tx) 
于 2012-10-01T23:14:24.030 に答える
0

Web SQLはHTML5の精密検査からほぼ2年間削除されており、サポートされていません。Webストレージインデックス付きDBが代わりになりました。

オブジェクトを削除するための構文:delete object;は正しいです。JavaScriptではあまり使用されていませんが、私はこれを使用しました。これが正しい使用法です。

Webストレージ(より一般的にはローカルストレージと呼ばれます)を使用して、すでに組み込まれてlocalStorageいるメソッドに付属するオブジェクトをインスタンス化します。removeItem(item key)

詳細については、Webstorageの上記のリンクを参照するか、チュートリアルを参照してください

于 2012-10-01T15:54:15.260 に答える
0

懸念事項がIOSまたはAndroidの場合、ネイティブにラップされたアプリケーションを作成すると、JavaScriptインターフェイスを作成できます。このインターフェースから、(Androidの場合)sqliteにアクセスして、クエリ可能な優れたソリューションを作成できます。欠点は、サイトにアクセスするのではなく、アプリケーションをダウンロードする必要があることです。

http://caniuse.com/indexeddb

indexeddbのサポートはかなりゆっくりと成長しています。適切なコーディングスタイルを使用すると、おそらくローカルストレージ(上記のコメントで述べたように)をかなりの速度で使用できます。

于 2013-09-09T16:11:04.737 に答える