2009-06-04 62 views
2

我将Java应用程序中的文本插入到Postgresql数据库中,但是当在字符串中遇到'char时,它会全部崩溃。我试过用replaceAll(“'”,“\\'”);甚至包含更多\ chars的不同变体,但它仍然在字符串中放入一个单独的'没有逃逸标志。将带有单引号的字符串从Java插入到Postgresql中

有什么方法可以替换字符串中的'与\'吗?或者将Strings的单引号放入Postgresql的另一种方式是?

+0

我有一个类似的问题,我正在使用hibernate查询,当试图插入时,如果一个字段包含单引号,则会引发异常 – 2015-06-13 02:50:52

回答

15

你不应该如果您使用的是,则不必担心手动执行此操作10正确。

+1

用于准备报表。那些确实是这样做的正确方法。 – Joey 2009-06-04 22:47:32

+1

对我准备的陈述也是+1。小心暴露自己的SQL注入攻击。 – 2009-06-04 22:55:18

+2

谢谢你,我遵循你的建议,并将其改为适当的准备声明,结果证明我错误地使用了它。这也解决了这个问题。 – Malthan 2009-06-04 23:03:02

2

大多数SQL实现使用''(2个单引号)来转义单引号。

例子:

SELECT * FROM users WHERE f_name='foo''bar'; 

或者你可以使用双美元符号:

例子:

SELECT * FROM users WHERE f_name=$$foo''bar$$; 

两个语句将搜索字符串foo'bar

+0

是的,这是标准SQL的功能,PostgreSQL支持这一点。请参阅http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS – 2009-06-04 22:45:15

+2

但您仍然想使用绑定变量和准备好的语句。 – Thilo 2009-06-04 22:48:20

+0

谢谢你,完美的工作。 – Malthan 2009-06-04 22:48:25

相关问题