2009-03-21 22 views
8

Webkit (en iPhone y Safari, al menos) admite el almacenamiento de bases de datos de HTML5 a través de SQLite.obteniendo un ID de inserción del almacenamiento de base de datos HTML5 de Webkit

Estoy tratando de encontrar la mejor forma de obtener la ID de la inserción (hay una 'identificación' de campo de autoincrementación en la base de datos) para la siguiente transacción.

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

Respuesta

16

muestra El código siguiente es de la documentación de Apple, sé que funciona en el iPhone y Safari, y probablemente WebKit. Puede obtener la Id. De inserción del objeto de respuesta resultSet utilizando resultSet.insertId. Además, puede obtener el número de filas afectadas, para una consulta de actualización, por ejemplo, utilizando la propiedad rowsAffected del objeto 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

Gracias, eso es lo que necesitaba! :-D – ceejayoz

+0

Me alegro de poder ayudar! –

0

Algo como esto se debe trabajar;

SELECT last_insert_rowid(); 
Cuestiones relacionadas