2011-04-21 74 views
0

我尝试构建可以获取SQL数据的Visual Studio项目。你能在我的SQL语法中找到错误吗?

错误是: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)", 

任何事情都会有帮助。

感谢

+4

你能打印已经用值格式化的sQuery吗?可能是您提供的参数数据有些问题 – Troydm 2011-04-21 22:10:13

+2

@Martin我的不好。没有看到代码中的细节。缺少代码。所以我不是多任务处理。 – 2011-04-21 22:15:29

+1

你可以请进入sQuery并在这里打印出我们在这里的sQuery的输出。 – 2011-04-21 22:18:28

回答

3

字符串格式化操作看起来好像没什么问题(尽管有限的信息),但也有一对夫妇的可能性。

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

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

  3. 尝试在实际目标DBMS中运行完全相同的查询(使用上面(1)中的打印内容),而不是通过代码运行。错误1064通常会给你一个near 'blah blah blah'附录的错误信息,这有助于确切地解决其中在声明中的问题所在。