プリペアドステートメント INSERT でテーブル名変数を使用する
Java PreparedStatement オブジェクトを使用して一連のバッチ処理された INSERT クエリを構築する場合、多くの開発者はテーブル名変数をクエリに追加するという課題に遭遇します。これは、同じ列形式を持つ複数のテーブルを操作する場合に望ましいことがよくあります。
クエリ ステートメントの「?」変数にテーブル名をハードコーディングしようとすると、エラーが発生する可能性があります。代わりに、テーブル名を変数として保持し、バッチ クエリを実行する前に動的に設定する必要があります。
stmt.setString(1, "tableName1") を使用してテーブル名を動的に設定しようとする人もいるかもしれませんが、これは PreparedStatement では不可能です。代わりに、クエリ名とテーブル名を PreparedStatement に割り当てる前に、それらを連結するかフォーマットする必要があります。
解決策:
文字列連結または String.format メソッドを使用して SQL クエリを動的に構築できます。テーブル名は PreparedStatement 内の変数になることを意図したものではなく、静的なクエリ文字列の一部です。
例:
<code class="language-java">String tableName = "tableName1"; // 将表名连接到查询中 String query = String.format("INSERT INTO %s (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);", tableName); PreparedStatement stmt = connection.prepareStatement(query);</code>
クエリ文字列を PreparedStatement に割り当てる前に動的に構築することで、各挿入ステートメントが適切なテーブルに確実に送信されるようになります。
以上がPreparedStatement INSERT クエリでテーブル名変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。