【发布时间】:2011-08-01 12:47:30
【问题描述】:
我写了一个查询表格:
select .... where x.y in (?) union select .... where p.y in (?) and a.b not in (?)
问号表示我在运行时使用preparedStatement.setString() 方法放置多个值的位置(在IN 子句中动态放置值)。
执行此查询的结果集似乎忽略了联合子句之后的查询。 我在任何地方都没有例外。
我发布这个问题,只是想知道其他人是否遇到过这样的问题,就像这个链接建议UNION of multiple tables and preparedstatement not working 数据库是 Oracle 10g,以防万一。
【问题讨论】:
-
我会怀疑“许多值”字符串被解释为单个字符串 - 因此与您的期望不匹配。感觉就像您想生成完整的 sql 字符串,然后将其作为执行立即类型操作发出。
-
我采用这个查询模板。然后根据传入参数的数量,替换一个?每个 in 子句带有 n 个问号,然后调用 setString 正确的次数。我不明白您所说的“许多值字符串解释为单个字符串”是什么意思。能否请您详细说明。
-
在这种情况下,您能否显示您对数据库执行的实际查询?
-
抱歉,查询失败,因为 UNION 之后的第二个 IN 子句填充不正确。感谢大家的帮助。我真的应该更加小心。 :(
标签: java sql oracle jdbc prepared-statement