6

複数行のデータを持つ 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]);
}

これに関する私の質問は次のとおりです。

  1. これは、外側のループを内側に移動することで実行できますdb.transaction。それは良くなるでしょうか、そしてその理由は何ですか?
  2. 単一の MySQL の複数の値のように、単一のクエリに複数の行を追加することは可能INSERTですか? または、これについて心配する必要はありません。
4

1 に答える 1

3

これは、外側のループを db.transaction 内に移動することで実行できます。それは良くなるでしょうか、そしてその理由は何ですか?

はい。ずっといい。1) トランザクションの作成は安くはありません。2) ループ非同期は一般的に悪いです。

単一の MySQL INSERT で複数の値を追加するように、単一のクエリで複数の行を追加することは可能ですか? または、これについて心配する必要はありません。

心配するな。複数行の回避策はシンタックス シュガーです。パフォーマンス上の利点はありません。1 つのトランザクションでループすることをお勧めします。

繰り返しますが、executeSql をループしないでください。これは非同期です。

于 2012-11-15T01:59:25.960 に答える