场景: 在一次处理搜索记录更新时,发现有一个String "The King's Man",总是更新不成功,更新语句如下,其他词语则可以正常更新,比如“The Batman”、“Inventing Anna”,更新语句也没有发现错误日志,所以考虑是不是特殊字符导致的
String whereArgs = SearchRecordField.CONTENT + " = '" + data.content + "' AND " + SearchRecordField.TYPE + "="
+ data.mType;
所以尝试对特殊字符进行转义,
public static String sqliteEscape(String keyWord){
keyWord = keyWord.replace("/", "//");
keyWord = keyWord.replace("'", "''");
keyWord = keyWord.replace("[", "/[");
keyWord = keyWord.replace("]", "/]");
keyWord = keyWord.replace("%", "/%");
keyWord = keyWord.replace("&","/&");
keyWord = keyWord.replace("_", "/_");
keyWord = keyWord.replace("(", "/(");
keyWord = keyWord.replace(")", "/)");
return keyWord;
}
String whereArgs = SearchRecordField.CONTENT + " = '" + sqliteEscape(data.mContent) + "' AND " + SearchRecordField.TYPE + "="
+ data.mType;
结果测试,可以更新正常!The End!