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