你能在我的SQL语法中找到错误吗?

时间:2011-04-21 22:06:42

标签: c# mysql sql visual-studio

我尝试构建获取SQL数据的Visual Studio项目。

错误是:1064检索数据库信息时出错。 SQL语法错误。

我不知道错误在哪里。

 sQuery = string.Format("select distinct stringid from {0} where TIMESTAMPDIFF( day, insertts, now() ) < 30 " +
          "and status = '{2}' and stringid not in (select distinct stringid from {1} where TIMESTAMPDIFF( day, insertts, now() ) < 30)",

一切都会有所帮助。

由于

1 个答案:

答案 0 :(得分:3)

字符串格式化操作对我来说很好(尽管信息有限),但有几种可能性。

  1. 检查生成的字符串是否为有效格式。这样,我的意思是在执行之前打印出sQuery。由于MySQL错误1064是一个相当普遍的“错误语法”错误,因此给String.Format的参数可能会形成错误的查询(例如{2}包含'个字符。

  2. 确保目标DBMS运行MySQL 5或更高版本。在此之前无法使用TIMESTAMPDIFF

  3. 尝试在实际目标DBMS中运行完全相同的查询(使用您在上面(1)中打印的内容)而不是通过代码。错误1064通常会为您提供错误消息的near 'blah blah blah'附录,这有助于在问题所在的语句中确切地确定 where