0

我有一个问题,当我想用​​这个方法从 java 更改数据库中的内容时:

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

我无法更改内容,因为我想输入新文本,而此文本包含诸如 '' 之类的字符,我无法更改旧内容!我所做的?

4

2 回答 2

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 回答
1

您可能想要使用PreparedStatements。您可以将参数添加到语句对象,它会照顾您正确处理任何字符转义、类型转换等。

编辑:Jesse Web 是对的,并提供了一个示例解决方案。他的回答应该被接受。

于 2012-12-17T19:46:58.697 回答