有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

MySql/JAVA替换

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

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

我无法更改内容,因为我想输入新文本,而此文本包含“我无法更改旧内容”这样的字符!我做什么


共 (2) 个答案

  1. # 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();
    
  2. # 2 楼答案

    您可能需要使用PreparedStatements。您可以将参数添加到语句对象中,它将为您正确处理任何字符转义、类型转换和;c

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