如何从phonegap android中的sqlite获取最后插入的行id

时间:2013-10-16 10:17:22

标签: cordova android-sqlite lastinsertid

我正在创建一个应用程序,我在其中插入数据。在表中插入数据后,我想得到该行的id,以便我可以根据它进行进一步的操作。 我尝试使用sqlite的 last_insert_rowid()函数,但没有找到运气。 任何人都可以告诉哪个是最后一个插入行id的最佳方法。 任何想法都表示赞赏。 提前谢谢。

2 个答案:

答案 0 :(得分:6)

你可以像这样获得最后一次插入的id -

tx.executeSql("INSERT INTO profile('name','label','list_order','category') values(?,?,?,?)", 
    [currentProfile.name, currentProfile.label, currentProfile.list_order, currentProfile.category], 
    function(tx, results){
        var lastInsertId = results.insertId; // this is the id of the insert just performed
    }, 
    failCB
)

WebSQL中的results.insertId类似于MySQL中的mysql_insert_id() -

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());

答案 1 :(得分:1)

你的表中是否有一个名为rowid,oid或_rowid_的列?如果这样做,那将导致last_insert_rowid()按预期工作的问题。请参阅here

解决方法: 如果您有一个自动递增的ID列,则可以使用以下SQL获取最后一个条目。

SELECT * FROM yourTable ORDER BY yourIdColumn DESC LIMIT 1

这很hacky,但它会奏效。