带有 WP8 的 SQLite 快把我逼疯了。 :(
我想做的就是检索最后插入的 id 的值...
我有:
class ShoppingItem
{
[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int Id {get; set;}
public string Name {get; set;}
public string Shop {get; set;}
public bool isActive {get; set;}
}
好吧,用过的都没有SQLiteConnection
对象及其 Table<ShoppingItem>
似乎包含一个包含最后一个 ID 的适当成员。
所以我尝试这样做:
private int GetLastInsertedRowID()
{
int Result = -1;
using (var db = new SQLiteConnection(m_DatabasePath)) {
Result = db.ExecuteScalar<int>("SELECT last_insert_rowid();");
}
return Result;
}
但是这个函数总是返回0
. :(
但是当我阅读 ShoppingItem
的所有条目时,他们的 ID 的值为 != 0。
所以我的问题是:如何检索最后插入的 ID?
PS:将 SQL 查询更改为 SELECT last_insert_rowid() FROM ShoppingItem;
给出了相同的结果。
PPS:类似 Getting the Last Insert ID with SQLite.NET in C# 的解决方案不要编译,显然使用的是旧版本的 SQLite,具有完全不同的 API
最佳答案
您的 SELECT last_insert_rowid()
调用不起作用,因为您在不同 数据库连接中运行它。
无论如何,您应该只从插入的 ShoppingItem
对象中读取 ID,如下所示:
var si = new ShoppingItem() {
Name = anItem,
Shop = aShop,
isActive = aIsActive,
};
db.Insert(si);
return si.Id;
关于c# - WP8/C#/SQLite : get last inserted id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476061/