我的查询使用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;
}
}
这是我得到错误的结果
尝试参数化查询。
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;
}
}
我同意@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();
会使它工作。
使用以下代码行,以便它与确切的日期匹配。如果日期的时间不同,那么它将不会获取该记录。
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();