2011-05-01 98 views
2

我想使用SQL WHERE子句搜索包含單引號的字符串。例如,我想搜索「Tom's house」,並且SQL子句應該是「location ='Tom's house'」。任何人都可以幫我格式化SQL子句嗎?如何使用SQL WHERE子句搜索包含單引號的字符串

+0

有人請解釋這個傢伙如何使用參數化查詢 – 2011-05-01 11:25:34

+1

@ T.J .:相信我,如果我知道任何Java或Android的話。 – 2011-05-01 11:27:48

回答

1

雙單引號Tom''s house

+0

非常感謝,它的工作原理! – Sirius 2011-05-01 11:29:26

+0

如果您無法完全控制將會代替「湯姆之家」的內容,那麼您最好使用TJ的方法。有人可能會放置'\'',然後用強大的SQL語言控制聲明的其餘部分,這可能會讓黑客訪問其他數據,具體取決於聲明。這就是爲什麼手動轉義不是很好的做法。 – 2011-07-13 14:22:27

7

如果你正在做的查詢從字面上看,你可以雙擊了'所以它的Tom''s house作爲SQLMenance說。

更好的通用解決方案,雖然是通過java.sql.PreparedStatement使用參數化查詢,如:

PreparedStatement ps; 
ResultSet rs; 

// Create the prepared statement 
ps = con.prepareStatement("SELECT x FROM table WHERE location = '?'"); 

// Set the parameter -- we don't have to quote it, the SQL classes do that 
ps.setString(1, "Tom's House"); 

// Do it 
rs = ps.executeQuery(); 

這不僅解決了報價爲您解決問題,但更重要的是它可以幫助保護您免受SQL injection攻擊你的數據庫。 永不包括任何用戶提供的數據「原樣」通過字符串連接等查詢,要麼使用參數化查詢或使絕對確信您正在預先正確地轉義數據。

0

準備語句API的使用避免了這些問題。

相關問題