编写SQL查询

时间:2009-08-06 08:18:02

标签: sql

我正在尝试编写一个SQL查询,但我遇到了问题。当我们想用where子句编写查询以缩小结果范围时,我们可以做

...其中name ='John'

(其中name是表中的一列)。 现在我试图插入一个这样的子句,除了名字是“O'Malley”。所以我认为查询将是

...其中name ='O'Malley'

但这给了我一个空指针异常。 有谁知道如何解决这个问题?

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

您的问题是字符串“O'Malley”中的单引号被SQL解释为字符串终止符。要转义单引号,请将其替换为两个单引号,如下所示:

where name = 'O''Malley'

编辑:如果字符串“O'Malley”来自用户输入,则您的代码容易受到SQL injection攻击。要避免此风险,请使用参数化查询。

答案 1 :(得分:2)

使用绑定变量来避免考虑引用问题。 绑定变量要注意sql注入。

答案 2 :(得分:1)

根据数据库,您可以逃避'我认为。看看http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

答案 3 :(得分:1)

如果在搜索字符串中一起使用两个撇号,SQL将意识到它是字符串的一部分,而不是SQL语法的一部分。

where name = 'O''Malley'