2009-03-21 5 views
8

Webkit (almeno su iPhone e Safari) supporta l'archiviazione del database HTML5 tramite SQLite.ottenere un ID di inserimento dall'archivio del database HTML5 di Webkit

Sto cercando di capire il modo migliore per ottenere l'ID dell'inserto (nel database è presente un campo di autoincremento "id") per la seguente transazione.

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

risposta

16

Il codice di esempio riportato di seguito è dalla documentazione di Apple, so che funziona su iPhone e Safari, e probabilmente WebKit. È possibile ottenere l'ID di inserimento dall'oggetto risposta resultSet utilizzando resultSet.insertId Inoltre, è possibile ottenere il numero di righe interessate, ad esempio per una query di aggiornamento utilizzando la proprietà rowsAffected dell'oggetto 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

Grazie, questo è quello che mi serviva! :-D – ceejayoz

+0

Contento di poterti aiutare! –

0

Qualcosa del genere dovrebbe funzionare:

SELECT last_insert_rowid();