我正在尝试将 Gandhi's Salt March
作为名称插入到我的数据库的名称列中。我有以下功能来检测名称中的撇号并将起始字符大写:
public static String toTitleCase(String givenString) {
StringBuffer sb = null;
if(givenString.contains("'")){
givenString = givenString.replace("'", "\\'");
System.out.println("Replace: "+givenString);
}
try{
String[] arr = givenString.split("\\s+");
sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
sb.append(Character.toUpperCase(arr[i].charAt(0))).append(arr[i].substring(1)).append(" ");
}
}catch(Exception e){
System.out.println(e);
}
System.out.println(sb.toString().trim());
return sb.toString().trim();
}
第一个 System.out.println() 结果如下:
Replace: Gandhi\'s Salt March
在 SQLite 中我得到以下异常:
(1) near "s": syntax error
From catch 2android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: INSERT INTO Details (BirthDate, Name);
这里出了什么问题?
编辑:
在将转义字符用作 ''
后,我仍然在名称中得到不需要的撇号:
最佳答案
错误:givenString = givenString.replace("'", "\\'");
右:givenString = givenString.replace("'", "''");
注意:如果您在查询中使用绑定(bind)参数 (?),则不得这样做(绑定(bind)将自动管理字符串值中的所有撇号)。
关于java - 如何在 SQLite 中插入带撇号的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622325/