Ich habe ein JavaScript-Objekt mit mehreren Datenzeilen und möchte es in die Web-SQL-Datenbank einfügen. So sieht mein Code aus.
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]);
}
Meine Fragen dazu sind:
- Dies kann durch Verschieben der äußeren Schleife nach innen erfolgen
db.transaction
. Wird es besser sein und warum? - Ist es möglich, mehrere Zeilen in einer einzelnen Abfrage hinzuzufügen, wie mehrere Werte in einem einzelnen MySQL
INSERT
? Oder ich sollte mir darüber keine Sorgen machen.
Antworten:
3 für die Antwort № 1Dies kann durch Verschieben der äußeren Schleife in db.transaction erfolgen. Wird es besser sein und warum?
Ja. viel besser. 1) Das Erstellen einer Transaktion ist nicht billig. 2) Das Schleifen von Asynchronen ist im Allgemeinen schlecht.
Ist es möglich, mehrere Zeilen in einer einzelnen Abfrage hinzuzufügen, wie z. B. mehrere Werte in einem einzelnen MySQL-INSERT? Oder ich sollte mir darüber keine Sorgen machen.
Machen Sie sich keine Sorgen. Mehrere Workarounds mit mehreren Zeilen sind syntaktischer Zucker.
Wiederholen Sie die Schleife nicht mit executeSql, es ist asynchron.