我在java中使用hibernate应用程序来检索和更新数据库。
在更新表时,我按如下方式形成sql查询,
String qry = "UPDATE " + entity + " SET " + htmlColumn + " ='"+value+"' WHERE " + id + " = " + primaryId;
其中value是一个html字符串,有时包含单引号。
如何转义忽略/转义单引号并成功更新表
由于
答案 0 :(得分:3)
答案 1 :(得分:1)
不要直接设置值。
currentSession()
.createQuery("UPDATE " + entity + " SET " + htmlColumn +
" = :value WHERE " + id + " :id")
.setParameter("value", value).setParameter(":id",id).executeUpdate();
答案 2 :(得分:0)
您可以使用双引号替换单引号。 value.replace("'","''");
但是您需要满足的不仅仅是因为如果没有正确适应,您的值很容易允许SQL注入。
答案 3 :(得分:0)
您可以将preparedstatement用作:
String query= "UPDATE " + entity + " SET " + htmlColumn + " =? WHERE " + id + " = " + primaryId;
PreparedStatement ptmt = con.prepareStatement(query);
ptmt.setString(1, value);