3

重複の可能性:
PreparedStatement IN句の代替?

SELECT * FROM tableName WHERE id IN ?

INPreparedStatementのパラメータをとして設定したいと思いますint[]。たとえば、の整数配列が{1, 2, 3, 4}クエリにIN (1,2,3,4)含まれます。

PreparedStatementのメソッドを使用してこの機能を実現する簡単な方法はありますか、INそれとも配列をループしてパラメーターを文字列として動的に作成する必要がありますか?

似たようなものを想像します#setString(int parameterIndex, String x)が、もちろんint配列用です。

4

2 に答える 2

1

SpringJDBCをお勧めします。作業を開始するのがいかに簡単かをご覧ください。

    NamedParameterJdbcTemplate t = new NamedParameterJdbcTemplate(dataSource);
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("ids", Arrays.asList(1, 2));
    List<Map<String, Object>> list = t.queryForList("select * from t1 where id in (:ids)", params);

Spring JDBCの優れている点は、それだけではないことがわかります。名前付きパラメーター、Connection、PreparedStatement、ResultSetを作成/閉じる必要がなく、チェックされた例外がなく、宣言型トランザクションのサポートなどがあります。

于 2012-12-04T03:32:40.457 に答える
0

これを実現するために私が知っている唯一の方法は、プリペアドステートメントを作成して新しい?を追加する前にクエリ文字列を変更することです。次に、通常どおりバインドを実行します。

于 2012-12-04T03:22:08.513 に答える