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

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

Barbara Streisand
リリース: 2024-12-13 03:30:10
オリジナル
520 人が閲覧しました

How to Efficiently Use PreparedStatement with an IN Clause for Multiple Parameter Values?

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 を使用してプレースホルダー文字列を動的に生成します。
  • 各値に疑問符とカンマを追加します。
  • クエリに連結する前に末尾のカンマを削除してくださいstring.
  • 例:
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート