gpt4 book ai didi

java - 使用 JdbcTemplate 时转义单引号

转载 作者:搜寻专家 更新时间:2023-10-31 19:48:07 26 4
gpt4 key购买 nike

我们正在使用 JdbcTemplate修改我们的底层 Oracle 数据库。我们通过 update(String sql) 来做到这一点方法。

代码看起来像下面这样:

String name = "My name's yellow";
String sql = "update FIELD set NAME = '" + name "' where ID = 10
jdbcTemplate.update(sql);

这会导致错误:

java.sql.SQLException: ORA-00933: SQL command not properly ended

问题是 name 变量中未转义的 '

转义该字符最方便且正确的方法是什么?

最佳答案

使用PreparedStatement .通过这种方式,您指定一个占位符,JDBC 驱动程序将通过向数据库发送语句以及参数作为参数来正确执行此操作。

    String updateStatement =
"update " + dbName + ".COFFEES " +
"set TOTAL = TOTAL + ? " +
"where COF_NAME = ?";

PreparedStatement updateTotal = con.prepareStatement(updateStatement);
updateTotal.setInt(1, e.getValue().intValue());
updateTotal.setString(2, e.getKey());

上面的问号代表占位符。

因为这些值作为参数传递,所以引用不会有问题,并且它可以保护您免受 SQL injection 的侵害也是。

关于java - 使用 JdbcTemplate 时转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956451/

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