【问题标题】:SQLite add a list to a tableSQLite 将列表添加到表中
【发布时间】:2014-11-12 07:50:18
【问题描述】:

我正在使用 SQLite 编写 Xamarin Android 应用程序,但不确定如何将对象添加到对象具有列表的表中。

这是我的模型类:

public class TestObject
{
    [PrimaryKey]
    public int Id { get; set; }
    public string name { get; set; }
    public DateTime lastUpdate { get; set; }
    public List<TestItem> items { get; set; }
}

这是我将对象添加到表中的代码:

public void InsertObjectToDatabase<T>(string databasePath, T objType)
{
    var db = new SQLiteConnection (databasePath);
    db.CreateTable(typeof (T));
    db.InsertOrReplace (objType);
}

这是我将 TestObject 添加到表中的代码:

TestObject testObject = new TestObject ();
testObject.Id = 1;
testObject.name = "Test Object 1";
testObject.lastUpdate = DateTime.Now;

sQLiteService.InsertObjectToDatabase<TestObject> (filename, testObject);

这是我得到的错误:

System.NotSupportedException: Don't know about System.Collections.Generic.List`1[LearningSQLite.TestItem]

是否可以向 SQLite 表添加列表?

提前致谢

【问题讨论】:

    标签: android list sqlite xamarin database-table


    【解决方案1】:

    创建另一个表并使用外键引用父表。在父项中插入行后,将列表中的所有项目插入子项中。在此处阅读更多信息http://www.sqlite.org/foreignkeys.html

    【讨论】:

      【解决方案2】:

      如果您使用 SQLite.Net-PCL,您可以使用 IBlobSerializer 接口将复杂类型存储到 BLOB(字节数组)。这是一个提供更多信息的单元测试类:

      https://github.com/oysteinkrog/SQLite.Net-PCL/blob/master/tests/BlobSerializationTest.cs

      对于序列化器,您可以实现自己的序列化器,也可以使用 JSON 序列化器之类的东西将数据存储为 JSON。

      我正在使用BLOB接口使用SQLite作为键值对缓存机制:

      https://github.com/XForms/Xamarin-Forms-Labs/blob/master/src/Xamarin.Forms.Labs/Plugins/Caching/Xamarin.Forms.Labs.Caching.SQLiteNet/SQLiteSimpleCache.cs

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 1970-01-01
        • 2014-05-10
        • 2014-08-22
        • 2011-05-31
        • 1970-01-01
        • 2017-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多