You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中用sqlite-net-pcl获取对象列表遇'type'参数空值错误

解决sqlite-net-pcl查询结果映射问题

错误原因

使用QueryAsync<object>报错的核心原因是:sqlite-net-pcl需要具体的实体类来映射查询返回的数据库字段,object类型没有对应属性,框架无法通过反射完成字段映射,因此抛出类型为空的异常。

解决步骤

1. 创建匹配数据库表的实体模型类

根据你查询的字段(ParamID、ParamValue、DefaultValue、ParamName),创建与数据库列完全匹配的实体类:

public class Parametername
{
    public int ParamID { get; set; }
    public string ParamValue { get; set; }
    public string DefaultValue { get; set; }
    public string ParamName { get; set; }
}

注意:字段名需与数据库列名完全一致(SQLite大小写敏感,建议严格匹配),属性类型要对应数据库列的实际类型(比如整数列用int,文本列用string)。

2. 修改查询方法,使用实体类作为泛型参数

将原方法中的object替换为创建好的实体类,调整返回类型:

public async Task<List<Parametername>> GetParamList()
{
    try
    {
        string sqlquery = "select ParamID,ParamValue,DefaultValue, ParamName from Parametername";
        return await Database.QueryAsync<Parametername>(sqlquery);
    }
    catch (Exception ex)
    {
        // 建议返回空列表而非null,避免调用方出现空引用异常
        return new List<Parametername>();
    }
}

3. 动态类型备选方案(不推荐生产环境使用)

如果暂时不想创建实体类,可以使用dynamic类型接收动态结果,但会失去编译时类型检查:

public async Task<List<dynamic>> GetParamList()
{
    try
    {
        string sqlquery = "select ParamID,ParamValue,DefaultValue, ParamName from Parametername";
        return await Database.QueryAsync(sqlquery);
    }
    catch (Exception ex)
    {
        return new List<dynamic>();
    }
}

内容的提问来源于stack exchange,提问作者Sarath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:33:13