简体   繁体   English

来自C#的Access SQL查询中的“条件表达式中的数据类型不匹配”错误

[英]“Data type mismatch in criteria expression” error in Access SQL query from C#

I am getting below Error, When I put Multiple Conditions with WHERE Clause. 当我在WHERE子句中添加多个条件时,我遇到错误。 Error:- Data type mismatch in criteria expression. 错误:-条件表达式中的数据类型不匹配。

My Query:- 我的查询:

this.query = "UPDATE [Attendance] SET [TimeOut]='" + DateTime.Now.ToShortTimeString() + "' WHERE [Emp_Id]='" + txtEmpId.Text + "'and[Date]='" + this.Date + "'";

Access SQL tends to be rather flexible when accepting Date/Time values as strings. 当接受日期/时间值作为字符串时,Access SQL往往相当灵活。 However, since you really should be using a parameterized query anyway because 但是,由于您确实应该使用参数化查询,因为

  • they're safer (by avoiding SQL Injection issues), 它们更安全(避免了SQL注入问题),
  • you don't have to mess with delimiters for date and text values, 您不必弄乱日期和文本值的分隔符,
  • you don't have to worry about escaping quotes within text values, and 您不必担心在文本值中转义引号,并且
  • they handle dates properly so your code doesn't mangle dates on machines set to dd-mm-yyyy format, 它们可以正确处理日期,因此您的代码不会破坏设置为dd-mm-yyyy格式的计算机上的日期,

consider using the following approach 考虑使用以下方法

this.query = "UPDATE [Attendance] SET [TimeOut]=? WHERE [Emp_Id]=? AND [Date]=?";
cmd.CommandText = this.query;
cmd.Parameters.AddWithValue("?", DateTime.Now.ToString("H:mm:ss"));
cmd.Parameters.AddWithValue("?", txtEmpId.Text);
cmd.Parameters.AddWithValue("?", this.Date);
cmd.ExecuteNonQuery();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM