gpt4 book ai didi

java - 带有可能的单引号的 ExecuteUpdate

转载 作者:行者123 更新时间:2023-12-02 04:47:49 26 4
gpt4 key购买 nike

我有以下代码:

sql = update [myTable] set content = '" map.getString() + "' where id = " map.getKey();
stmt.executeUpdate(sql);

这是在循环中运行的,map.getString() 可以返回一个带有单引号或双引号的字符串。我尝试使用 map.getString() 周围的多个引号来转义它(例如

sql = update [myTable] set content = ''" map.getString() + "'' where id = " map.getKey();

但运气不好。

如何让它用map.getString()的文字值更新内容列?

我收到的错误示例是:(有很多类似的)

java.sql.SQLException: Incorrect syntax near 's'.

java.sql.SQLException: Invalid SQL statement or JDBC escape, terminating ''' not found.

最佳答案

避免使用连接参数值字符串来构建请求:

  • 不安全(可能有sql注入(inject))
  • 它没有经过优化(因为数据库引擎必须始终解析请求,即使始终将相同的字符串发送到数据库)
  • 它会产生很多错误的转换错误(特殊字符等)

优先使用带绑定(bind)参数的 PreparedStatement

示例:

PreparedStatement stmt = connection.prepareStatement("UPDATE mytable SET content = ? WHERE id = ?");
stmt.setString(1, map.getString());
stmt.setInt(2,map.getKey());
stmt.executeUpdate();

使用绑定(bind)参数将避免您遇到的转换错误和语法错误

关于java - 带有可能的单引号的 ExecuteUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29523368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com