C# 用c语言实现MS-Access查询
我正在通过c执行MS Access查询。下面是查询C# 用c语言实现MS-Access查询,c#,ms-access-2010,C#,Ms Access 2010,我正在通过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.To
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语句包含拼写错误或缺少的保留字或参数名称,或者标点符号不正确。}
我需要知道:
为什么这不起作用?
有没有更简单的方法?
您应该将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 name cmd,则将其替换为参数化查询:
看起来您的查询结构不正确,请尝试使用此结构:选择。。。从哪里…你是对的Alireza,它起作用了。我想记下答案。
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);