选择使用小巧玲珑

问题描述 投票:3回答:3

我的查询使用dapper有问题,是否有人想象帮助我并说出我做错了什么,目前在我提出错误点的日期显示错误,如何正确纠正?谢谢大家的帮助

这是我目前的代码

public string GetBezeichnung(int LP, DateTime date)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection())
    {
        connection.ConnectionString = _ConnectionString;
        var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND ZER_Datum = " + date).FirstOrDefault();
        return output;
    }
}

这是我得到错误的结果

c# dapper
3个回答
6
投票

尝试参数化查询。

public string GetBezeichnung(int LP, DateTime date)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(_ConnectionString))
    {
        connection.Open();
        string sql = @"
SELECT ZER_Bezeichnung 
FROM Z_ERFASSUNG 
WHERE ZER_LPE = @LP
  AND ZER_Datum = @date"
        var output = connection.Query<string>(sql, new { LP = LP, date = date }).FirstOrDefault();
        return output;
    }
}

2
投票

我同意@Parrish Husband,但第二个参数必须是“Date = date”。

在你的例子中,没有'围绕日期,所以AQL认为它是一堆或一堆东西。

把它改成

var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND ZER_Datum = '" + date + "'").FirstOrDefault();

会使它工作。


0
投票

使用以下代码行,以便它与确切的日期匹配。如果日期的时间不同,那么它将不会获取该记录。

var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND Cast( ZER_Datum as DATE) = Cast('" + date + "' as DATE)").FirstOrDefault();
© www.soinside.com 2019 - 2024. All rights reserved.