ホームページ >データベース >mysql チュートリアル >JDBC でテーブル名にプリペアド ステートメントを使用できないのはなぜですか?

JDBC でテーブル名にプリペアド ステートメントを使用できないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-19 13:37:09632ブラウズ

Why Can't I Use Prepared Statements for Table Names in JDBC?

JDBC プリペアドステートメントでのテーブル名のパラメータ化のアドレス指定

JDBC プリペアド ステートメントはセキュリティとパフォーマンスに大きな利点をもたらしますが、制限もあります。 このような制限の 1 つは、SQL クエリ内でテーブル名としてパラメータを使用できないことです。これを試みると、通常はエラーが発生します。

解決策は簡単です。テーブル名のプレースホルダーを使用する代わりに、テーブル名を SQL クエリ文字列に直接組み込みます。 例:

<code class="language-java">private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM " + reportDate; </code>

この修正された例では、reportDate (実際のテーブル名が含まれると想定) が SQL 文字列に直接連結されます。 これにより、テーブル名をパラメータ化する試みが回避され、準備されたステートメントを正常に実行できるようになります。

この制約を覚えておくことが重要です。テーブル名は準備されたステートメント内のパラメーターとして扱われないため、クエリに明示的に含める必要があります。 そうしないと、クエリが失敗します。

以上がJDBC でテーブル名にプリペアド ステートメントを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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