首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlBuilder返回错误结果

SqlBuilder返回错误结果
EN

Stack Overflow用户
提问于 2019-03-27 12:53:13
回答 1查看 278关注 0票数 1

我使用NpgsqlPostgres进行查询。为了构建我的查询,我使用了Dapper及其SqlBuilder。

当我在DB中执行常规语句时,它将返回正确的结果。当我通过SqlBuilder做这件事时,它会返回错误的结果。

我尝试了不同的方法,改变了addTemplate或参数,但没有改变什么。

此外,我还试图以不同的方式更改行builder.Where("period = @period", new { model.Period });

代码语言:javascript
复制
builder.Where("period = @Period", new { model.Period });
builder.Where("period = period", new { model.Period });
builder.Where("period = @TestPeriod", new { TestPeriod = model.Period });

或者这是一种更常见的方式:

builder.Where("period = '" + model.Period + "'");

代码语言:javascript
复制
using (NpgsqlConnection con = Helper.GetNpgsqlConnection())
        {

            var builder = new SqlBuilder();
            var selector = builder.AddTemplate("SELECT * FROM szzRecord.folders /**where**/");

            if (model.Period != null)
                builder.Where("period = @period", new { model.Period });

            var result = con.Query(selector.RawSql);
            return result;
        }

普通sql查询的结果,例如:SELECT * FROM szzRecord.folders WHERE period = 24返回251行--这是正确的。

dapper查询的结果是1223,它们都是行。所以看起来这个参数不存在。在期待selector时,我找到了period的参数。我在selector.parameters.templates[0]找到了selector.parameters.templates[0]。是吗?selector.parameters.parameters是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 13:22:34

您需要将SqlBuilder的参数传递到查询中。

代码语言:javascript
复制
var result = con.Query(selector.RawSql);

将此更改为:

代码语言:javascript
复制
var result = con.Query(selector.RawSql, selector.Parameters);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55377710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档