2010-01-22 6 views
2

Est-il possible de faire quelque chose comme ceci:HTML 5 SQLite: Les insertions multiples en une seule transaction

begin; 
    insert into some_table (some_col, another_col) values ('a', 'b'); 
    insert into some_table (some_col, another_col) values ('c', 'd'); 
    ... 
commit; 

... en HTML 5? Avec chaque transaction étant asynchrone et ayant son propre rappel, il me semble qu'il serait difficile d'écrire une routine qui insère un nombre inconnu de lignes, puis rappelle quand il a terminé.

+1

La réponse courte est oui. Apparemment à l'intérieur d'une transaction, les commandes executeSql sont mises en file d'attente. Vous pouvez parcourir et exécuter toutes vos instructions d'exécution dans une transaction. Le rappel de transaction ne se déclenchera que lorsque toutes les instructions executeSql auront été exécutées. –

Répondre

7

Voici un exemple de code de la façon dont vous le faites. J'ai testé sur des versions récentes de safari et de chrome dans macos, ios et android.

var db = openDatabase('dbname', '1.0', 'db description', 1024 * 1024); 
db.transaction(function (tx) { 
    tx.executeSql("insert into some_table (some_col, another_col) values ('a', 'b');"); 
    tx.executeSql("insert into some_table (some_col, another_col) values ('c', 'd');"); 
    ... 
}, 

)

Questions connexes