2012-01-26 14 views
1

私はJDBCを使用している、私は単一の列に値の配列を設定する必要があります 私はそれがHibernateとIbatisで動作することを知っているが、それは働くのが難しいようです純粋なJDBC SQL 。SQLのクエリに値の配列を設定

Iは..文字列のアレイは

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

値と

select * from emp where name in(?) 

Iはpstmt.setObject(1名)を試み、それが動作していないようなクエリ有する

+0

?を。 –

答えて

1

これは、純粋なJDBCではサポートされていません。 in句に配列の要素ごとに1つのプレースホルダが含まれるようにクエリを生成する必要があります。

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

関連する問題