是否有一个Java库可以转义将要插入SQL查询的字符串中的特殊字符。
我一直在编写代码来转义各种东西,但我发现总会遇到一些新问题。因此,一个可以处理所有或大多数可能性的库会非常方便。
编辑:我正在使用MySQL(如果这有任何区别)。
好的... jdbc。将字符串作为参数传递,不要将它们附加到查询字符串中。
http://devwar.blogspot.com/2010/06/how-to-escape-special-characters-in.html
建议使用apache.commons.lang.StringEscapeUtils
,我会尝试一下mysql_real_escape_string
,即使已经有了mysql_escape_string
。前者尝试通过考虑区域设置来“修复”这种方法(但它仍然不总是有效)。我不会因为这是你自己的答案而将其投票否决 - 尽管它应该是原始帖子的补充 - 但这不是一个好方法。 - user166390StringEscapeUtils
中的方法甚至不能像 mysql_escape_string
一样有效。例如,如果数据包含换行符,它将立即失败。还有其他需要转义但被忽略的“基本”字符。 - user166390我知道这是一个长时间的线程,但是使用commons-lang库有一个名为escapeSql(String)
的方法。此外,使用预处理语句可以自动转义有问题的SQL字符。