SQLite 特殊字符

294 阅读1分钟

场景: 在一次处理搜索记录更新时,发现有一个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!