0

データベースを取得および更新するために、JavaでHibernateアプリケーションを使用しています。

テーブルの更新中に、次のようにSQLクエリを作成します。

String qry = "UPDATE " + entity  + " SET " + htmlColumn + " ='"+value+"' WHERE " + id + " = " + primaryId;

ここで、valueは、場合によっては一重引用符を含むhtml文字列です。

一重引用符を無視/エスケープしてテーブルを正常に更新する方法

ありがとう

4

4 に答える 4

3

これに使用PreparedStatementする

String qry = "UPDATE " + entity  + 
             " SET " + htmlColumn + " = ? " +
             "WHERE " + id + " = ?";

PreparedStatement pstmt = con.prepareStatement(qry);
pstmt.setString(1, value);
pstmt.setInt(2, primaryId);
pstmt.executeUpdate();
于 2012-11-28T06:16:50.043 に答える
1

値を直接設定しないでください。

currentSession()
    .createQuery("UPDATE " + entity  + " SET " + htmlColumn +
              " = :value WHERE " + id + " :id")
    .setParameter("value", value).setParameter(":id",id).executeUpdate();
于 2012-11-28T06:20:02.793 に答える
0

一重引用符を二重一重引用符に置き換えることができます。value.replace("'","''");ただし、適切に対応されていない場合、SQLインジェクションを簡単に考慮できるため、それ以上の対応が必要になります。

于 2012-11-28T06:16:06.627 に答える
0

次のようにpreparedstatementを使用できます。

String query= "UPDATE " + entity  + " SET " + htmlColumn + " =? WHERE " + id + " = " + primaryId;

PreparedStatement ptmt = con.prepareStatement(query);
ptmt.setString(1, value);
于 2012-11-28T06:17:46.127 に答える