Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova 如何在phonegap android中从sqlite获取最后插入的行id_Cordova_Android Sqlite_Lastinsertid - Fatal编程技术网

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

Cordova 如何在phonegap android中从sqlite获取最后插入的行id,cordova,android-sqlite,lastinsertid,Cordova,Android Sqlite,Lastinsertid,我正在创建一个在表中插入数据的应用程序。在表中插入数据后,我希望获得该行的id,以便根据它执行进一步的操作。 我试图使用sqlite的last\u insert\u rowid()函数,但没有找到任何运气。 任何人都能说出获取最后一个插入行id的最佳方法吗。 任何想法都值得赞赏。 提前感谢。您的表中是否有名为rowid、oid或_rowid_的列?如果这样做,将导致last\u insert\u rowid()按预期工作时出现问题。看 解决办法: 如果您有一个自动递增的ID列,则可以使用以下SQ

我正在创建一个在表中插入数据的应用程序。在表中插入数据后,我希望获得该行的id,以便根据它执行进一步的操作。 我试图使用sqlite的last\u insert\u rowid()函数,但没有找到任何运气。 任何人都能说出获取最后一个插入行id的最佳方法吗。 任何想法都值得赞赏。
提前感谢。

您的表中是否有名为rowid、oid或_rowid_的列?如果这样做,将导致
last\u insert\u rowid()
按预期工作时出现问题。看

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

SELECT * FROM yourTable ORDER BY yourIdColumn DESC LIMIT 1

它有点黑,但可以工作。

您可以在这样的表上获取最后一次插入的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\u insert\u id()

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

最后一次插入时,rowid()应该已经起作用了。插入成功了吗?希望您使用的是正确的查询SELECT last\u insert\u rowid()。不要包含表名我可能会错误地使用它。请给我一个例子,以及如何将结果传递给变量。如果同时从数据库中删除记录,这将不起作用。新记录获取的已删除记录的ID正是我要查找的。您可能知道如何从这个结果集中获取刚才插入的行数据。@尼尔在上面的示例中,您可以引用
currentProfile
对象。我想在你的情况下,你可能有一个循环内的这个。在这种情况下,您可以将
tx.executeSql
包装在闭包中,这样它就可以在
currentProfile
对象上保留作用域。在我的例子中,它不在for循环中。但数据是从所有文本框对象检索的。问题是大约有20个。并且希望有一种简单的方法来获取一个资源对象,该对象已经从结果集中设置了所有属性。因为我将在成功事件中创建的对象传递给查看页面。