我有转换日期时间的问题,我看不出我犯了什么错误。 我认为它应该是某个地方,以确定相同的SQL查询识别日期 这是我设置断点时得到的结果 这是基础
的结果这是我发送数据的代码
var arravialDates = dataAccess.get_dates(userID, date, DateTime.DaysInMonth(date.Year, date.Month)); //get dates for user
//working hours
DateTime dateH = new DateTime(2099, 12, 12, 0, 0, 0);
bool hasDate = false;
for (int i = 0; i < arravialDates.Count; i++)
{
var arravial = dataAccess.getPraesenzzeit(arravialDates[i], userID);
int index = 0;
}
答案 0 :(得分:5)
您的屏幕截图显示了.Query<>
方法。 SqlConnection
没有Query
方法。
Dapper,microORM用于编写参数化查询更容易。使用Dapper或任何其他ORM时,不需要字符串插值或连接。只需写下:
var output=connection.Query<PRAESENZZEIT>(
"select * from Z_PRAESENZZEIT " +
"where ZPZ_Datum = @date and ZPZ_LPE_ID= @id "
"order by ZPZ_ID_ASC",
new {date=DatTime.Today,id=1});
更好的是:
var query = "select * from Z_PRAESENZZEIT " +
"where ZPZ_Datum = @date and ZPZ_LPE_ID= @id "
"order by ZPZ_ID_ASC",
var output=connection.Query<PRAESENZZEIT>(query,new {date=date,id=userid});
答案 1 :(得分:3)
你的方法错了。您永远不应该通过字符串连接创建SQL语句。您很容易使用SQL注入,您将遇到不同系统上的格式问题,并且您将对查询解析器的性能产生很大影响。
解决方案是使用参数化查询:为参数添加占位符并通过命令参数添加值。
您的SQL应该看起来像where ZPZ_Datum = @zpzdate
,然后添加名为zpzdate
的参数:command.Parameters.Add("@zpzdate", arravial);
。