首页 > 解决方案 > 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#visual-studiosqlitexamarin

解决方案


推荐阅读