ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。