我遇到了查询问题,得到了类似的内容
command.CommandText = "SELECT " +
"COUNT(a.`id`) " +
"FROM " +
"`messageaccess` a " +
"WHERE " +
"a.`Users_LOGIN` = '" + Settings.UserLogin + "' " +
"AND a.`Status` = '" + Enums.MessageStatus.New + "' " +
"AND a.`FOLDER` = '" + Enums.MessageFolder.INBOX + "'" +
"AND a.`ShowAlert` = '" + Enums.YesNo.No + "'" +
"AND a.`Postponed` <= " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "";
但是sql抛出异常 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第14行的'14:40:37'附近使用正确的语法
尝试了不同的组合,但没有任何作用:(
答案 0 :(得分:3)
简单的答案是不要将值直接嵌入到SQL中。
使用参数化的SQL语句,将参数值指定为DateTime.Now
,一切都会很好:
答案 1 :(得分:2)
您忘记了日期/时间周围的引号。
答案 2 :(得分:1)
尝试使用此行:
"AND a.`Postponed` <= NOW()"
它应该与当前时间的本机MySql函数一起使用。
答案 3 :(得分:0)
查看名为parameterized queries的内容。他们为您处理这些格式问题。
答案 4 :(得分:0)
您不应构建追加字符串的查询。这不是很安全(sql注入),并且您没有利用ADO .NET功能根据参数类型设置正确的格式。
您应该使用参数化查询。