2009-03-21 24 views
8

Webkit (trên iPhone và Safari, ít nhất) hỗ trợ lưu trữ cơ sở dữ liệu của HTML5 thông qua SQLite.nhận ID chèn từ bộ nhớ cơ sở dữ liệu HTML5 của Webkit

Tôi đang cố gắng tìm ra cách tốt nhất để lấy ID chèn (có trường tự động 'id' trong cơ sở dữ liệu) cho giao dịch sau.

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

Trả lời

16

Mã mẫu dưới đây là từ tài liệu của Apple, tôi biết nó hoạt động trên iPhone và Safari, và có lẽ WebKit. Bạn có thể lấy id chèn từ đối tượng phản hồi resultSet bằng cách sử dụng resultSet.insertId Ngoài ra, bạn có thể nhận được số hàng bị ảnh hưởng, ví dụ như truy vấn cập nhật bằng cách sử dụng thuộc tính rowsAffected của đối tượng 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

Cảm ơn, đó là những gì tôi cần! :-D – ceejayoz

+0

Vui vì tôi có thể giúp! –

0

Something như thế này nên làm việc:

SELECT last_insert_rowid(); 
Các vấn đề liên quan