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语句的各种排列,以便为单引号使用不同的字符 - 无济于事。 我认为有一个“简单”的解决方法,但我找不到它。该解决方案可能位于堆栈溢出 的某处,但我找不到它。有人能指出我正确的方向吗?
答案 0 :(得分:0)
你可以用双撇号替换那个撇号,这是'
的标准SQL转义序列只需执行以下代码段:
+ "'" + _field[x].replaceAll("'", "''") + "', "
您也可以使用"而不是'在您的sql语句中,如下所示:
+ "\"" + _field[x] + "\", "