我有一个问题,当我想用这个方法从 java 更改数据库中的内容时:
stmt.executeUpdate("UPDATE contentPage1 SET Content = REPLACE(Content,'"+oldContenido+"','"+newContenido+"');");
我无法更改内容,因为我想输入新文本,而此文本包含诸如 '' 之类的字符,我无法更改旧内容!我所做的?
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();
您可能想要使用PreparedStatements。您可以将参数添加到语句对象,它会照顾您正确处理任何字符转义、类型转换等。
编辑:Jesse Web 是对的,并提供了一个示例解决方案。他的回答应该被接受。