我在java中使用hibernate應用程序來檢索和更新數據庫。單引號Sql更新查詢
在更新表,我形成一個SQL查詢如下,
String qry = "UPDATE " + entity + " SET " + htmlColumn + " ='"+value+"' WHERE " + id + " = " + primaryId;
其中值是包含單引號有時一個HTML字符串。
如何逃脫忽略/逃脫單引號和更新表成功
感謝
我在java中使用hibernate應用程序來檢索和更新數據庫。單引號Sql更新查詢
在更新表,我形成一個SQL查詢如下,
String qry = "UPDATE " + entity + " SET " + htmlColumn + " ='"+value+"' WHERE " + id + " = " + primaryId;
其中值是包含單引號有時一個HTML字符串。
如何逃脫忽略/逃脫單引號和更新表成功
感謝
請勿直接設置值。
currentSession()
.createQuery("UPDATE " + entity + " SET " + htmlColumn +
" = :value WHERE " + id + " :id")
.setParameter("value", value).setParameter(":id",id).executeUpdate();
http:// www。 mkyong.com/spring/spring-named-parameters-examples-in-simplejdbctemplate/ – gavenkoa
您可以用雙單引號代替單引號。 value.replace("'","''");
,但您需要滿足的不僅僅是這些,因爲如果沒有適當地處理SQL注入,您的值可以很容易地進行SQL注入。
使用PreparedStatement
此
String qry = "UPDATE " + entity +
" SET " + htmlColumn + " = ? " +
"WHERE " + id + " = ?";
PreparedStatement pstmt = con.prepareStatement(qry);
pstmt.setString(1, value);
pstmt.setInt(2, primaryId);
pstmt.executeUpdate();
是的,這是做這件事的最好方法,我也建議同樣的, +1在我之前發帖:-) –
或者使用'org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate' – gavenkoa
可以利用PreparedStatement爲:
String query= "UPDATE " + entity + " SET " + htmlColumn + " =? WHERE " + id + " = " + primaryId;
PreparedStatement ptmt = con.prepareStatement(query);
ptmt.setString(1, value);
您是說您正在使用hibernate。我認爲你不應該寫這種查詢。 –