【问题标题】:How to SELECT dynamic type of objects in SQLiteAsyncConnection-如何在 SQLiteAsyncConnection 中选择动态类型的对象-
【发布时间】:2017-01-06 10:55:08
【问题描述】:

我正在尝试使用 SQLiteAsyncConnection 构建一个数据库,其中所有查询都来自服务器。

database = new SQLiteAsyncConnection(dbPath);

服务器的查询分为两部分[执行&检索]

对于我正在使用这行代码的执行查询

database.ExecuteAsync(serverResponse);

其中serverResponse 可能是一个sql CREATEINSERTUPDATE 语句。

至于检索查询,我试图找到一种从数据库中检索动态对象并将它们序列化以将它们发送到数据库的方法。我正在尝试做这样的事情来检索数据库中的对象列表

var ls = await database.QueryAsync<dynamic>(serverResponse);

但是这个语句返回的是一个对象列表,我不知道怎么用。

我在本地尝试过这样的事情

database.ExecuteAsync("CREATE TABLE Persons(PersonID int);");
database.ExecuteAsync("INSERT INTO Persons(PersonID) VALUES (5);");
var ls = await database.QueryAsync<dynamic>("SELECT * FROM Persons");
int x = ls[0].PersonID;

但它给了我这个错误'object' does not contain a definition for 'PersonID';这表示我需要将对象转换为 Person 类才能使用它。(请注意,我没有任何名为 Person 的类具有公共属性 PersonID;对象是动态的,我可以t 告诉服务器的查询是什么)。

我尝试序列化ls

string str = JsonConvert.SerializeObject(ls);

但它返回一个带有空对象 [{}] 的 JSON 数组。

如何在不需要强制转换的情况下序列化任何查询的结果。

【问题讨论】:

    标签: c# sqlite xamarin.forms dynamicobject


    【解决方案1】:
    var ls = await database.QueryAsync<object>("SELECT * FROM Persons");
    var json = JsonConvert.SerializeObject(ls);
    

    试试这个?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 2014-07-02
      • 2021-06-22
      相关资源
      最近更新 更多