如何在SQLiteAsyncConnection中选择动态类型的对象 -

时间:2017-01-06 10:55:09

标签: c# sqlite xamarin.forms dynamicobject

我尝试使用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;对象是动态的,我不能告诉服务器的查询是什么。)

我尝试序列化ls

string str = JsonConvert.SerializeObject(ls);

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

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

1 个答案:

答案 0 :(得分:0)

var ls = await database.QueryAsync<object>("SELECT * FROM Persons");
var json = JsonConvert.SerializeObject(ls);

试试这个吗?