0

このメソッドを使用してJavaからデータベースのコンテンツを変更したい場合、1つの問題があります。

stmt.executeUpdate("UPDATE contentPage1 SET Content = REPLACE(Content,'"+oldContenido+"','"+newContenido+"');");

新しいテキストを入力したいので、内容を変更できません。このテキストには、`' のような文字が含まれています。古い内容は変更できません。私がやること?

4

2 に答える 2

1

PreparedStatementsを使用することもできます。パラメータをステートメントオブジェクトに追加すると、文字のエスケープ、型変換などを適切に処理できるようになります。

編集:Jesse Webは正しく、ソリューションの例を提供しています。彼の答えは受け入れられるべきです。

于 2012-12-17T19:46:58.697 に答える
1

PreparedStatementsを使用すると、SQL でプレースホルダー文字 (?) を使用して、後で値を入力できます。また、エスケープも自動的に処理します...

PreparedStatement pstmt = con.prepareStatement("UPDATE contentPage1 SET Content = REPLACE(Content, ?, ?);");
pstmt.setString(1, "first");
pstmt.setString(2, "second - characters like ' will be escaped automatically!");

アップデート

以下のコメントでは、OP が実際に REPLACE SQL 関数を使用しようとしているのではなく、特定の列のデータを更新しようとしているように思えます。これを実現するためのサンプルコードを次に示します (@TedHopp のコメントを少し変更したバージョン)。

int messageId = 123; // use the PK or unique identifier of the record you want to update
PreparedStatement pstmt = con.prepareStatement("UPDATE contentPage1 SET Content = ? WHERE Id = ?;"); // 'Id' is whatever your PK column is
pstmt.setString(1, "my new message content");
pstmt.setInt(2, messageId);
int numRowsAffected = pstmt.executeUpdate();
于 2012-12-17T19:49:09.213 に答える