【问题标题】:"Data type mismatch in criteria expression" error in Access SQL query from C#来自 C# 的 Access SQL 查询中的“条件表达式中的数据类型不匹配”错误
【发布时间】:2014-05-17 18:49:33
【问题描述】:

当我使用 WHERE 子句放置多个条件时,我遇到了错误。 错误:- 标准表达式中的数据类型不匹配。

我的查询:-

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

【问题讨论】:

标签: c# ms-access


【解决方案1】:

Access SQL 在接受日期/时间值作为字符串时往往相当灵活。然而,既然你真的应该使用参数化查询,因为

  • 它们更安全(通过避免 SQL 注入问题),
  • 您不必弄乱日期和文本值的分隔符,
  • 您不必担心在文本值中转义引号,并且
  • 它们会正确处理日期,因此您的代码不会在设置为 dd-mm-yyyy 格式的机器上破坏日期,

考虑使用以下方法

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多