2012-01-26 131 views
1

我正在使用JDBC,我必須將數組值設置爲單個列, 我知道它適用於Hibernate和Ibatis,但似乎很難使其工作純JDBC數據庫sql 。將值數組設置爲SQL查詢

我有字符串的值的數組

names[] = new String[]{"A","B","C"}; 

和查詢等

select * from emp where name in(?) 

我試圖pstmt.setObject(1,名稱),它不工作..

+0

如果動態地創建您的查詢字符串,並添加是爲了你們的陣列中的每個項目,然後綁定他們中的每一個查詢你可能會在那裏? 。 –

回答

1

這在純JDBC中不受支持。您必須生成一個查詢,以便in子句包含數組中每個元素的一個佔位符。

Spring的JDBC幫助類支持命名參數以及您想要執行的操作。

+0

我認爲它現在在JDBC中支持 - 請參閱我的答案! – Falco

0

這將與以下語法工作:

"SELECT * FROM emp WHERE name IN (SELECT column_value FROM TABLE(?))" 

pmst.setArray(1, conn.createArrayOf("VARCHAR", names)); 
+0

請注意,'createArrayOf'可能不適用於所有主要關係數據庫。請參閱:http://stackoverflow.com/q/28400518/59087 –

+0

有幾種技巧可以讓它與其他供應商合作,但是對於每個DBMS都需要一個單獨的案例,這是一件麻煩事。 – Falco