2009-06-04 40 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

相關問題