JDBC下解決特殊字元的方式

zhuzhu_guang發表於2010-09-03
剛剛解決了訪問資料庫的特殊字元的問題,重要的幾點如下:
1)儘量使用預處理查詢,JDBC的預處理解決了大多數特殊字元的問題,較好的解決了SQL隱碼攻擊

2)對於查詢字元中帶有%和_的,SQL語句中like的,一般會全部查出,如果要匹配%和_,應該加入ESCAPE,並在%前加入轉義字元,如"\"
匹配50%:
select * from A where A.data like '%50\%% escape '\'


3)如果查詢字元中帶有%或_,並且帶有\,需要首先將\轉義:\\,在用2)中方式用escape對%和_轉義
匹配50\%:
select * from A where A.data like '%50\\\%% escape '\'


if(keyword.contains("%") || keyword.contains("_")){
keyword = keyword.replaceAll("\\", "\\\\")
.replaceAll("\\%", "\\\\%")
.replaceAll("\\_", "\\\\_");
}

相關文章