Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“条件表达式中的数据类型不匹配”;从C访问SQL查询时出错#_C#_Ms Access - Fatal编程技术网

C# &引用;“条件表达式中的数据类型不匹配”;从C访问SQL查询时出错#

C# &引用;“条件表达式中的数据类型不匹配”;从C访问SQL查询时出错#,c#,ms-access,C#,Ms Access,当我把多个条件和WHERE子句放在一起时,我得到了下面的错误。 错误:-条件表达式中的数据类型不匹配 我的问题是:- this.query = "UPDATE [Attendance] SET [TimeOut]='" + DateTime.Now.ToShortTimeString() + "' WHERE [Emp_Id]='" + txtEmpId.Text + "'and[Date]='" + this.Date + "'"; 当接受日期/时间值作为字符串时,Access SQL往往非

当我把多个条件和WHERE子句放在一起时,我得到了下面的错误。 错误:-条件表达式中的数据类型不匹配

我的问题是:-

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

当接受日期/时间值作为字符串时,Access SQL往往非常灵活。但是,既然确实应该使用参数化查询,因为

  • 它们更安全(通过避免SQL注入问题)
  • 您不必弄乱日期和文本值的分隔符
  • 您不必担心在文本值中转义引号,并且
  • 它们可以正确处理日期,这样您的代码就不会在设置为
    dd-mm-yyyy
    格式的机器上损坏日期
考虑使用以下方法

this.query=“更新[考勤]设置[超时]=?其中[员工Id]=?和[日期]=?”;
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();

这些日期字段是否需要签名?研究如何使用参数化查询。这可能有助于: