gpt4 book ai didi

c# - SqlBuilder 返回错误结果

转载 作者:行者123 更新时间:2023-11-29 12:50:23 24 4
gpt4 key购买 nike

我有一个使用 NpgsqlPostgres 的查询。为了构建我的查询,我使用 Dapper 及其 SqlBuilder。

当我在数据库中进行正常语句时,它返回了正确的结果。当我通过 SqlBuilder 执行此操作时,它返回了错误的结果。

我尝试了不同的方式,更改了 addTemplate 或参数,但没有任何改变。

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

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 + "'");

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] 中找到了 Period = 24。它是否正确? selector.parameters.parameters 为空。

最佳答案

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

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

将此更改为:

var result = con.Query(selector.RawSql, selector.Parameters);

关于c# - SqlBuilder 返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55377710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com