gpt4 book ai didi

java - JDBC 和 Oracle 数据库 : Escape ' (single quote)

转载 作者:行者123 更新时间:2023-12-01 21:24:35 24 4
gpt4 key购买 nike

您好,这看起来很简单,但我在这里遇到了问题。

首先我使用 Statement#executeBatch用于执行许多 UPDATE 语句。每个更新语句都有要更新的字符串值。这些字符串有“'”单引号。我尝试按照 Oracle 文档在其前面添加一个单引号,并在单引号前面添加 '\\\' 。对于第一个查询,我的查询被卡住了,甚至在 10 分钟后也没有出来。对于第二个,我收到“批处理:ORA-00927:缺少等号”错误。

正确的做法是什么?注意:- 我无法使用PreparedStatement 来利用JDBC 参数。

请帮忙。

最佳答案

您可以使用 q-quoted strin g 例如 q'['''''''']'

这给出了以下示例

Statement stmt = con.createStatement();

stmt.addBatch("update tst set txt = q'['''''''']' where id = 1");
stmt.addBatch("update tst set txt = q'['''''''']' where id = 2");
stmt.addBatch("update tst set txt = q'['''''''']' where id = 3");
stmt.addBatch("update tst set txt = q'['''''''']' where id = 4");
stmt.addBatch("update tst set txt = q'['''''''']' where id = 5");
// submit a batch of update commands for execution
int[] updateCounts = stmt.executeBatch();

但是正确的方法是使用准备好的语句

PreparedStatement stmt = con.prepareStatement("update tst set txt = ? where id = ?");
5.times { i ->
stmt.setString(1, "''''''''");
stmt.setInt(2, i+1);
stmt.addBatch();
}

// submit a batch of update commands for execution
int[] updateCounts = stmt.executeBatch();

关于java - JDBC 和 Oracle 数据库 : Escape ' (single quote),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458232/

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