我尝试使用SQLiteAsyncConnection构建数据库,其中所有查询都来自服务器。
database = new SQLiteAsyncConnection(dbPath);
服务器的查询分为两部分[执行&检索]
执行查询我使用这行代码
database.ExecuteAsync(serverResponse);
其中serverResponse
可能是sql CREATE
,INSERT
或UPDATE
声明。
对于检索查询,我试图找到一种从数据库中检索动态对象的方法,并将它们序列化以将它们发送到数据库。我试图做这样的事情来检索数据库中的对象列表
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数组。
如何在不需要强制转换的情况下序列化任何查询的结果。
答案 0 :(得分:0)
var ls = await database.QueryAsync<object>("SELECT * FROM Persons");
var json = JsonConvert.SerializeObject(ls);
试试这个吗?