ホームページ >Java >&#&チュートリアル >JDBC で複数のパラメータに対して IN 句を含む PreparedStatement を効率的に使用する方法

JDBC で複数のパラメータに対して IN 句を含む PreparedStatement を効率的に使用する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-10 16:41:11798ブラウズ

How to Efficiently Use PreparedStatement with an IN Clause for Multiple Parameters in JDBC?

複数のパラメータに IN 句を含む PreparedStatement を使用する

JDBC の PreparedStatement を使用して IN 句を含む SQL クエリを実行する場合、複数のパラメータの値を設定するのは困難な場合があります。

所定の取扱いパラメータ

パラメータのリストが事前にわかっている場合は、次のアプローチを使用します。

  • パラメータの複数のプレースホルダを使用して文字列クエリを構築します。
  • この文字列クエリを使用してステートメントを準備します。
  • パラメーターを反復処理し、setObject() を使用して設定します。

不明なパラメータの処理

パラメータのリストが事前に不明な場合は、次の手順を使用します。

  • 「?」を追加します。 IN 句クエリ内の可能な各値のプレースホルダー。
  • String.format() を使用して、対応する数のプレースホルダーを持つクエリ文字列を作成します。
  • この変更されたクエリ文字列を使用してステートメントを準備します。
  • パラメータを反復処理し、setObject() メソッドを使用してパラメータを設定します。

の場合たとえば、複数の値を持つクエリ Select * from test where フィールド (?) のパラメータを設定するには、次のコードを使用できます。

String query = String.format("select * from test where field in (%s)",
                             values.stream()
                             .map(v -> "?")
                             .collect(Collectors.joining(", ")));

PreparedStatement stmt = connection.prepareStatement(query);

int index = 1;
for (Object o : values) {
    stmt.setObject(index++, o);
}

このアプローチにより、IN 句が任意の数値に動的に対応できるようになります。パラメーターの数を増やし、柔軟なクエリ実行を可能にします。

以上がJDBC で複数のパラメータに対して IN 句を含む PreparedStatement を効率的に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。