IN 句パラメータ リストを使用した PreparedStatement の使用
JDBC では、PreparedStatement インターフェイスを使用して、動的に設定されたパラメータ値を使用して SQL クエリを実行できます。一般的なシナリオの 1 つは、IN 句を利用して複数の値に基づいてデータを取得することです。
IN 句を使用したクエリ構文
次の構文は、次の構文を使用したクエリの例を示しています。 IN 句:
connection.prepareStatement("Select * from test where field in (?)");
複数の処理値
IN 句に複数の値が必要な場合、この状況を処理するには 2 つの方法があります。
1.既知のパラメーターのリスト:
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
2.不明なパラメーターのリスト:
StringBuilder builder = new StringBuilder(); for( int i = 0 ; i < values.size(); i++ ) { builder.append("?,"); } String placeHolders = builder.deleteCharAt( builder.length() -1 ).toString(); String stmt = "select * from test where field in ("+ placeHolders + ")";
パラメータ値の設定
クエリ文字列が準備されたら、次を使用してパラメータ値を設定します。 PreparedStatement の setObject メソッド。パラメータのインデックスは値ごとに更新する必要があります。例:
int index = 1; for( Object o : values ) { pstmt.setObject( index++, o ); }
以上が複数のパラメータ値に対して IN 句を含む PreparedStatement を効率的に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。