使用c#进行MS Access查询
本文关键字:Access 查询 MS 进行 使用 | 更新日期: 2023-09-27 18:17:31
我正在通过c#执行MS Access查询。下面是查询
String SelWHQuery = "SELECT DateDiff('n',INTime,OUTTime)''60 & '.' & Format(DateDiff('n',[INTime],[OUTTime]) Mod 60,'00') AS Workedhours" +
"' WHERE EMPID = '" + Eno +
"'AND RDate=# "+ DateTime.Now.Date.ToString("yy-MM-dd") +
"# FROM INOUTPunching";
给出如下错误
{" SELECT语句包含一个保留字或参数名,该参数名拼写错误或缺失,或标点符号错误。"}
I need to know:
- 为什么不工作?
- 有没有更简单的方法?
应将FROM
子句置于WHERE
子句之前。这就是你的问题所在。你有一个额外的单引号应该被删除。这是你应该写的查询:
String SelWHQuery = "SELECT DateDiff('n',INTime,OUTTime)''60 & '.' & Format(DateDiff('n',[INTime],[OUTTime]) Mod 60,'00') AS Workedhours FROM INOUTPunching " +
" WHERE EMPID = '" + Eno +
"'AND RDate=# "+ DateTime.Now.Date.ToString("yy-MM-dd") + "#";
关于一个更简单的方法:不,这是最简单的方法,但它容易受到SQL注入攻击。将其替换为一个参数化查询(假设您有一个OldDbCommand
名称cmd
):
String SelWHQuery = "SELECT DateDiff('n',INTime,OUTTime)''60 & '.' & Format(DateDiff('n',[INTime],[OUTTime]) Mod 60,'00') AS Workedhours FROM INOUTPunching " +
" WHERE EMPID = @EmpId AND RDate=# "+ DateTime.Now.Date.ToString("yy-MM-dd") + "#";
cmd.CommandType = CommandType.Text;
cmd.CommandText = SelWHQuery;
cmd.Parameters.AddWithValue("@EmpId", Eno);