sql >> データベース >  >> RDS >> Oracle

ArrayListをOracleのPreparedStatementにバインドするにはどうすればよいですか?

    プリペアドステートメントの単一のパラメータにリストをバインドすることはできません。

    リスト内の各要素のパラメーターマーカーを使用してSQLを生成します。例:

    SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
    

    クエリごとに新しいステートメントを生成しますが、PreparedStatementを使用することをお勧めします。 。リストにStringが含まれている場合 インスタンスでは、SQLインジェクションから保護するために必要なエスケープを取得します。

    ただし、Integerのような安全な型であっても オブジェクト、一部のドライバー、またはミドルウェアは、PreparedStatementsをキャッシュできます 、同じフォームが要求された場合は、キャッシュされたインスタンスを返します。もちろん、いくつかのテストが必要になります。リストのサイズが大きく異なる場合は、さまざまなステートメントがあり、実装が不十分なキャッシュでは、それほど多くを処理する準備ができていない可能性があります。



    1. MySQLでテーブルのピボットを解除する

    2. phpMyAdminでルートログインを無効にする

    3. SQL:各カテゴリでトップクラスの記事を検索

    4. 変更番号を取得するにはどうすればよいですか?