2009-03-21 4 views
8

Webkit (auf dem iPhone und Safari, zumindest) unterstützt HTML5 Datenbank Speicher über SQLite bekommen.eine Insert-ID von Webkit HTML5-Datenbank-Speicher

Ich versuche, wie man am besten, um herauszufinden, um den Einsatz ID zu erhalten (es gibt ein autoincrement Feld ‚id‘ in der Datenbank) für die folgende Transaktion.

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

Antwort

16

Der Beispielcode unten von der Apple-Dokumentation ist, weiß, dass ich es auf dem iPhone und Safari funktioniert, und wahrscheinlich WebKit. Sie können die Insert-ID aus dem resultSet Response-Objekt erhalten, indem resultSet.insertId auch verwenden, können Sie die Anzahl der betroffenen Zeilen, für eine Update-Abfrage beispielsweise erhalten, indem die RowsAffected Eigenschaft des resultSet Objekts.

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

Danke, das ist, was ich brauchte! :-D – ceejayoz

+0

Ich bin froh, dass ich helfen konnte! –

0

So etwas wie dies funktionieren sollte:

SELECT last_insert_rowid();