ホームページ >データベース >mysql チュートリアル >PreparedStatement INSERT クエリでテーブル名変数を使用するにはどうすればよいですか?

PreparedStatement INSERT クエリでテーブル名変数を使用するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-13 09:06:43861ブラウズ

How Can I Use a Table Name Variable in a PreparedStatement INSERT Query?

プリペアドステートメント 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 サイトの他の関連記事を参照してください。

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