Java PreparedStatement バッチ挿入での動的テーブル名
バッチ PreparedStatement
操作に Java の INSERT
を使用するには、多くの場合、ターゲット テーブル名を動的に指定する必要があります。 ただし、PreparedStatement
はテーブル名ではなく列 値 をパラメータ化するように設計されています。
解決策: 動的 SQL の構築
重要なのは、テーブル名自体をパラメータ化しようとするのではなく、SQL クエリを動的に構築することです。 テーブル名 (たとえば、tableNameVar
に格納されている) を SQL 文字列に連結し、列値のプレースホルダーを残します。
<code class="language-java">// tableNameVar holds the dynamic table name String sql = String.format("INSERT INTO %s (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?);", tableNameVar);</code>
動的テーブル名を使用して SQL クエリを構築した後、PreparedStatement
の setString()
(または他の適切な setXXX()
メソッド) を使用して列値のプレースホルダーを設定します。
<code class="language-java">preparedStatement.setString(1, "col1Value"); preparedStatement.setString(2, "col2Value"); // ... set remaining column values</code>
この方法は、動的テーブル名の柔軟性と PreparedStatement
のパフォーマンスとセキュリティの利点を組み合わせています。 SQL 文字列内のプレースホルダーの順序が setXXX()
呼び出しの順序と正確に一致していることを確認してください。
以上がJava PreparedStatements で動的テーブル名をバッチ挿入に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。