c# - WP8/C#/SQLite : get last inserted id?

标签 c# sqlite windows-phone-8

带有 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/

相关文章:

java - 在 Android SQLite 数据库 onCreate() 中重新抛出异常

php - Php SQLITE 中的分页

c# - 如何防止WP8全景控件暂时滑动?

android - 适用于 iOS、Android 和 WP8 的跨平台 UI 标记语言?

c# - 接收命令时通过 TCP 发送字符串

c# - 将 KeyValuePair 枚举传递给 FormUrlEncodedContent 构造函数时,为什么 Visual Studio 会生成警告 CS620?

android - 外部Sqlite数据库,无法插入数据库,android studio

C#:为手机 Windows Phone 8.1 相机设置亮度

c# - 同一引用程序集的多个版本

c# - 为应用程序提供提升的 UAC