2009-03-21 7 views
8

Webkit (sur iPhone et Safari, au moins) prend en charge le stockage de base de données HTML5 via SQLite. J'essaie de trouver la meilleure façon d'obtenir l'ID d'insertion (il y a un champ d'auto-incrément 'id' dans la base de données) pour la transaction suivante.Obtenir un ID d'insertion à partir du stockage de base de données HTML5 Webkit

db.transaction(function(tx) { 
    tx.executeSql("INSERT INTO teams (name) VALUES (?)", [$('#team_name').val()]); 
}); 

Répondre

16

L'exemple de code ci-dessous est de la documentation d'Apple, je sais que cela fonctionne sur iPhone et Safari, et probablement WebKit. Vous pouvez obtenir l'ID d'insertion à partir de l'objet de réponse resultSet en utilisant resultSet.insertId En outre, vous pouvez obtenir le nombre de lignes affectées, par exemple pour une requête de mise à jour à l'aide de la propriété rowsAffected de l'objet resultSet.

db.transaction(
function (transaction) { 
    transaction.executeSql('INSERT into tbl_a (name) VALUES (?);', 
     [ document.getElementById('nameElt').innerHTML ], 
     function (transaction, resultSet) { 
      if (!resultSet.rowsAffected) { 
       // Previous insert failed. Bail. 
       alert('No rows affected!'); 
       return false; 
      } 
      alert('insert ID was '+resultSet.insertId); 
      transaction.executeSql('INSERT into tbl_b (name_id, color) VALUES (?, ?);', 
       [ resultSet.insertId, 
        document.getElementById('colorElt').innerHTML ], 
       nullDataHandler, errorHandler); 
     }, errorHandler); 
}, transactionErrorCallback, proveIt); 

Apple's HTML5 Database Documentation

+0

Merci, c'est ce que je avais besoin! :-D – ceejayoz

+0

Content de pouvoir aider! –

0

Quelque chose comme cela devrait fonctionner:

SELECT last_insert_rowid(); 
Questions connexes