SQLite c# : 如何在 sqlite BLOB 数据类型中保存和检索自定义对象

本文关键字:保存 检索 对象 自定义 数据类型 BLOB sqlite SQLite | 更新日期: 2023-09-27 18:32:28

有一个自定义对象(前公司)和自定义对象列表(前员工)需要保存在 BLOB 数据类型中,下面是我尝试过的一段代码,但没有成功。我已经尝试过DbType.Binary但没有成功。

下面是插入查询

sql_cmd.Parameters.Add("@company", DbType.Byte); 
sql_cmd.Parameters["@company"].Value = (Company)root.company;

sql_cmd.Parameters.Add("@employees", DbType.Byte);
sql_cmd.Parameters["@employees"].Value = ((List< Employee >))root.employeeList;

例外:

System.FormatException was unhandled by user code.
Message=Input string was not in a correct format.


以下是关联的类

 class Company
    {
        public string id { get; set; }
        public string name { get; set; }
        public List<Package> packages { get; set; }
        public string description { get; set; }
    }
 class Employee
    {
        public string id { get; set; }
        public string name { get; set; }
        public object description { get; set; }
        public Address address { get; set; }
        public Contact contact { get; set; }
        public string enterpriseId { get; set; }
        public object createdDate { get; set; }
        public object modifiedDate { get; set; }
}

SQLite c# : 如何在 sqlite BLOB 数据类型中保存和检索自定义对象

如果您使用的是 Sqlite.net-PCL,则可以存储整个对象。但不是 blob 类型。此外,还必须为"包"对象提供一个单独的表。可以将公司 ID 属性添加到包对象,以便轻松找到项目。此外,它还具有更干净的语法。

db.CreateTable<Company>();
db.CreateTable<package>();
db.InsertAll(AlistOfCompanies);