gpt4 book ai didi

java - 不将字符串列表作为单个参数传递给 preparedStatement.setObject()

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:08 24 4
gpt4 key购买 nike

我想将来自请求参数的字符串列表作为单个参数传递给 preparedStatement.setObject()。这里我将对象列表转换为单个字符串。

因此,在将这个转换后的字符串传递给 setObject 方法时,它正在将 ' 转换为\'。

所以我的查询是这样的:

select * from category where category IN (?)

for (int counter = 0; (!sqlParams.isEmpty()) && counter < sqlParams.size(); counter++) {
System.out.println(sqlParams.get(counter));
stmt.setObject(counter + 1, sqlParams.get(counter));
System.out.println(stmt.toString());
}

这里 sqlParams.get(counter) 给我以下值。

'Adult', 'Classic', 'Fantasy', 'Mystery'

但是当我使用 stmt.setObject() 并打印 stmt 的值时,它显示以下值:

'\'Adult\', \'Classic\', \'Fantasy\', \'Mystery\''

所以在查询形成时是这样的:

SELECT * FROM mytable WHERE category IN ('Adult\', \'Classic\', \'Fantasy\', \'Mistry\'');

还有其他方法可以解决这些方法,例如传递单个字符串,然后对每个单独的字符串执行查询。但这会增加我的代码的时间复杂度。任何人都可以建议我解决这个问题吗?

最佳答案

当参数个数可变时,不能使用 JDBC 预处理语句,就像这里一样。这 ?在查询中扩展为单个值,而不是多个以逗号分隔。

您可以做的是用适当数量的 ?s 构造一个 sql,然后在循环中设置每个参数。

关于java - 不将字符串列表作为单个参数传递给 preparedStatement.setObject(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404185/

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