8

Webkit(至少在 iPhone 和 Safari 上)通过 SQLite 支持 HTML5 的数据库存储。

我试图弄清楚如何最好地获取以下事务的插入 ID(数据库中有一个自动增量字段“id”)。

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

2 回答 2

16

下面的代码示例来自 Apple 的文档,我知道它适用于 iPhone 和 Safari,可能还有 WebKit。您可以使用 resultSet 响应对象获取插入 idresultSet.insertId 此外,您可以获取受影响的行数,例如通过使用 resultSet 对象的 rowsAffected 属性进行更新查询。

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 的 HTML5 数据库文档

于 2009-03-31T18:39:41.163 回答
0

像这样的东西应该可以工作:

SELECT last_insert_rowid();
于 2009-03-21T22:19:25.303 回答