2011-06-22 28 views
0

我在过去一个月里一直在使用MySQL的这个问题。这不是一个大问题,但它很烦人。为什么此SQL以一种格式工作,但不是另一种?

query = "SELECT * FROM MESSAGE_TEMPLATES WHERE MESSAGE_SEND_DATE = '" & _date & "'" 

当我将它传递给MySQL中的dataReader时,这条简单的线条工作正常。但是:

query = "SELECT * FROM MESSAGE_TEMPLATES" & _ 
" WHERE MESSAGE_SEND_DATE = '" & _date & "'" 

即使intellisense显示它们都具有相同的值,但这不起作用。 MySQL抱怨语法错误。您可以想象,对于占用多行的大型报表而言,这会变得更加棘手。我在这里错过了什么?

回答

1

你能打印出每个字符串到控制台或日志,并寻找任何随机空白或非自愿包括的控制字符?

+0

啊,我看到了问题,这是我写字符串的方式。在我发布的例子中,它实际上工作正常(我从程序中抓取了一个随机字符串)。但是,在其他情况下,我没有在换行符后添加空格。 – MGZero

1

它应该工作 - 不能作为一个字符串字符串的MySQL的东西。如果问题仍然存在考虑使用XML语法来让你做的多行的事:

Dim query = <sql><![CDATA[ 
SELECT * FROM MESSAGE_TEMPLATES 
WHERE MESSAGE_SEND_DATE = :Date 
]]></sql>.Value 

还要注意的是,你应该使用parameterized queries因为它们更安全更容易阅读和更快。

+0

谢谢,我会研究参数化查询。 – MGZero

相关问题