我正在使用JDBC,我必須將數組值設置爲單個列, 我知道它適用於Hibernate和Ibatis,但似乎很難使其工作純JDBC數據庫sql 。將值數組設置爲SQL查詢
我有字符串的值的數組
names[] = new String[]{"A","B","C"};
和查詢等
select * from emp where name in(?)
我試圖pstmt.setObject(1,名稱),它不工作..
我正在使用JDBC,我必須將數組值設置爲單個列, 我知道它適用於Hibernate和Ibatis,但似乎很難使其工作純JDBC數據庫sql 。將值數組設置爲SQL查詢
我有字符串的值的數組
names[] = new String[]{"A","B","C"};
和查詢等
select * from emp where name in(?)
我試圖pstmt.setObject(1,名稱),它不工作..
這在純JDBC中不受支持。您必須生成一個查詢,以便in
子句包含數組中每個元素的一個佔位符。
Spring的JDBC幫助類支持命名參數以及您想要執行的操作。
我認爲它現在在JDBC中支持 - 請參閱我的答案! – Falco
這將與以下語法工作:
"SELECT * FROM emp WHERE name IN (SELECT column_value FROM TABLE(?))"
pmst.setArray(1, conn.createArrayOf("VARCHAR", names));
請注意,'createArrayOf'可能不適用於所有主要關係數據庫。請參閱:http://stackoverflow.com/q/28400518/59087 –
有幾種技巧可以讓它與其他供應商合作,但是對於每個DBMS都需要一個單獨的案例,這是一件麻煩事。 – Falco
如果動態地創建您的查詢字符串,並添加是爲了你們的陣列中的每個項目,然後綁定他們中的每一個查詢你可能會在那裏? 。 –