ComName是'a'b'c'“def”j Limited。
我尝试在每个'和'之前添加\,但执行的结果查询是
"UPDATE empTable SET empId= '25', ComName = 'a'b'c'"def"j Limited where ID=1"
我没有在''中看到我的Comname,并且在每个'和'
之前都没有出现以下是构造列值
的代码columnValue.replaceAll("\'", "\\" + "\'");
columnValue.replaceAll("\"", "\\" + "\"");
columnValue=("'" + columnValue + "'");
如何插入这些类型的字符串?
答案 0 :(得分:8)
查看JDBC库中的PreparedStatements。 e.g。
PreparedStatement pstmt = con.prepareStatement("update Orders set pname = ? where Prod_Id = ?");
pstmt.setInt(2, 100);
pstmt.setString(1, "Bob");
pstmt.executeUpdate();
通过使用setString()等,它将使您不必引用字符串。关于如何使用它们的Here's a tutorial。
编辑:正如尼克在下面强调的那样,这不仅可以节省引用问题,还可以节省SQL注入(安全)问题。答案 1 :(得分:1)
作为快速解决方案,您可以尝试使用Apache commons lang StringEscapeUtils#escapeSql或等效库,例如this one