2012-09-17 172 views
0

我想一个参数传递给查询,而不是写我已经把范围缩小到这个简单的解释文字丰富。 我试图插入frament是MySQL查询参数字符串数组

where pkw_0.keyword in (:kwd) 

我已经使用一个String []来构造形式瓦尔斯的字符串=“‘AVAL’,‘BVAL’”,我使用的setParameter传递到查询( “KWD”,瓦尔斯);该查询返回零结果。但是,如果我构建手工查询,并使用MySQL控制台的查询返回1个结果预计。

所以我假设一个单一的字符串是不正确的参数或有我需要之前通过电话的setParameter经过他们做值的一些条件。

回答

1

每个参数只表示一个单一字面值。你需要在你准备好的声明(每个值)创建多个占位符,然后提供每个值MySQL作为一个单独的参数。

+0

嗯,问题是我有一个可变数量的值,所以我无法预测有多少,甚至会有多少值的最大值。所以我认为你是说在给定这些条件的情况下,我不能用setParameter中的'('...')'来代替,你有没有其他的建议(除了试图预设值的数量) –

+0

@JeffLowcock :你在用什么语言?为什么你不能计算阵列中元素的数量? – eggyal

+0

这是所有的Java - 它不是的,这是问题的论据计数。我已经简化了这个(也许太过分了),我实际上使用了namedNativeQuery和关联的SqlResultMapping,所以动态创建这个可能是不可能的。因此原来的方法 - 这可能根本不可能。 –