c# - SQLite连接查询返回 0 但查询正确返回
问题描述
首先,我将 Xamarin/C# 与 sqlite-net-pcl 一起使用。
我使用 SQLite.SQLiteConnection.CreateTable 创建一个表。T 是我可以通过的课程之一,这是一个示例:
public class Foo : IDatabaseItem
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Subject { get; set; }
public string Description { get; set; }
}
}
插入记录后,我想返回最后插入的键。SQLiteConnection.Insert 不幸的是返回插入的行数而不是插入的行数。
public int GetLastInsertedId()
{
return conn.Query<int>($"SELECT Max(Id) FROM {typeof(T).Name}").First();
}
问题是上面的函数,它总是返回 0。我试过删除 .First 来分析它返回的整个对象,它会返回一个 IEnumerable,它正确地包含了数据库中的行数,但是所有的结果为0。
有趣的是,如果我修改我的函数以返回创建它的原始类并删除“Max(Id”),它就可以工作。
public Foo GetLastInsertedId()
{
return conn.Query<Foo>($"SELECT * FROM {typeof(T).Name}").First();
}
我相信我没有正确引用列名,我很想查看表格以了解我正在使用的内容,但不幸的是,我使用的 android 版本似乎不允许您查看 SQLite 数据库(来自 Visual Studio)。
我知道我可以使用 Linq 查询来快速获取我想要的数据,但是当我想要的只是 Id 时,感觉从数据库返回整个对象有点笨重,尤其是随着数据库的增长。
任何帮助将不胜感激,我确定我在做一些愚蠢的事情......只是无法弄清楚是什么。
解决方案
推荐阅读
- c++ - 不理解 C++ 中的 setprecision 函数
- kotlin - 为什么仍然会创建一个复合 ID 列之一为空的引用实体?
- react-native - Microsoft Azure 登录成功返回空范围 - react-native-app-auth - 获取 401
- asynchronous - 回调函数是如何触发的?
- python - 我不能使用 moviepy 或 ffmpeg-python 来合并音频和视频,因为我正在 kivy 中为 Android 构建应用程序,有哪些选项可以这样做
- php - 动态创建的复选框不可点击
- python - 用python编码的postgresql查询中的语法错误
- css - 覆盖 Rails link_to 中的文本下划线
- reactjs - 为什么 react react-hooks/exhaustive-deps 会改变我的代码?
- reactjs - 类型'typeof React'.ts(2339)上不存在属性'render'