java - 如何在 SQLite 中插入带撇号的名称

标签 java android sql sqlite

我正在尝试将 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);

这里出了什么问题?

编辑:

在将转义字符用作 '' 后,我仍然在名称中得到不需要的撇号:

enter image description here

最佳答案

错误:givenString = givenString.replace("'", "\\'");
右:givenString = givenString.replace("'", "''");

注意:如果您在查询中使用绑定(bind)参数 (?),则不得这样做(绑定(bind)将自动管理字符串值中的所有撇号)。

关于java - 如何在 SQLite 中插入带撇号的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622325/

相关文章:

java - 通过系统属性更改单个类的记录器级别

java.lang.UnsatisfiedLinkError : Native method not found in Android 错误

sql - 是在 ON 子句中添加更多逻辑更好,还是只包含最少的必要逻辑?

android - 使 View 逐渐出现

android - 访问 getExternalStorageDirectory

python - 简单的sqlite问题

sql - 如何查看已执行了哪些查询。 (mysql)

java - NetBeans Java Web 应用程序 Git 无法正常工作/连接

java - 主线程中的异常 - java.util.InputMismatchException

java - Hibernate:使用在另一个实体中引用的复合键面对 "broken column mapping for id"