如何将 List<KeyValuePairs<int,object>> 保存为 SQLite 表?

Posted

技术标签:

【中文标题】如何将 List<KeyValuePairs<int,object>> 保存为 SQLite 表?【英文标题】:How to save List<KeyValuePairs<int,object>> as a SQLite table? 【发布时间】:2021-10-04 14:47:42 【问题描述】:

我有一个键值对列表,但我不确定如何将它保存在 SQLite 中。 我已经下载了库,并创建了一个数据库。我知道如何保存对象,但是如何将 List> 保存到表格中?

【问题讨论】:

除非序列化,否则无法真正将任意对象保存到表中。 您可以查看将对象序列化为 JSON,然后将其存储在 TEXT 类型的列中,另一列是整数。 这是真的需要以关系方式存储的东西,还是您可以将其序列化到文件中? 这是我每次打开活动时都需要访问的列表。每次运行该方法时,它都会运行 2 个嵌套循环,数组中包含 300 个项目。因此,我认为将结果存储一次到 SQLite 并从中访问它会是一个更优化的解决方案。不过,我愿意接受建议。 【参考方案1】:

您可以将 int 保存在一列中,将对象保存在另一列中。或者,您可以向对象添加一个 int 属性,而不是使用键值对。 然后你可以像这样保存它:

    public void Insert(Product product)
    
        using SQLiteConnection sqliteConnection = new SQLiteConnection(GetConnectionString());
        sqliteConnection.Execute("insert into Products (Name, Price, Quantity) values (@Name,  @Price, @Quantity)", product);
    

在这里,我只将我的产品对象的一些属性保存在数据库中。

【讨论】:

我绝对可以为此添加一个 int 属性。谢谢!

以上是关于如何将 List<KeyValuePairs<int,object>> 保存为 SQLite 表?的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 解码 KeyValuePairs<String: Person>

Parallel.ForEach 具有可枚举的 KeyValuePairs?

如何将 List<Object> 转换为 List<MyClass>

如何将 List<string> 转换为 List<myEnumType>?

如何将 List<Uint8list> 转换为 GIF?

如何将 List<int> 转换为 string[]?