INSERT INTO嵌入式撇号

时间:2016-12-07 18:14:25

标签: java sqlite

Eclipse neon.1(4.6.1)java; SQLite 3.8.7(sqlite-jdbc-3.8.7.jar)

我正在尝试使用以下代码段将客户数据插入表中:

PreparedStatement ps;
insertSQL = "INSERT INTO tbl_TotalPatent "
    + "(Abstract, `Application/Filing Date`, `Application Number`) "
    + "VALUES ("
    +  "'" + _field[0] + "', "
    +  "'" + _field[1] + "', "
    +  "'" + _field[2] + "');";
ps = con.prepareStatement(insertSQL);
ps.execute();

不幸的是,客户端的数据有一个嵌入式撇号,我无法改变。假设它是单引号,“INSERT INTO”语句在找到撇号时会爆炸:

  

java.sql.SQLException:[SQLITE_ERROR] SQL错误或缺少数据库(接近“s”:语法错误)

我已经尝试了INSERT INTO语句的各种排列,以便为单引号使用不同的字符 - 无济于事。 我认为有一个“简单”的解决方法,但我找不到它。该解决方案可能位于堆栈溢出 的某处,但我找不到它。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

你可以用双撇号替换那个撇号,这是'

的标准SQL转义序列

只需执行以下代码段:

+  "'" + _field[x].replaceAll("'", "''") + "', "    

您也可以使用"而不是'在您的sql语句中,如下所示:

+  "\"" + _field[x] + "\", "