ホームページ >データベース >mysql チュートリアル >Java での PostgreSQL DELETE ステートメントが「列が存在しません」というメッセージで失敗するのはなぜですか?

Java での PostgreSQL DELETE ステートメントが「列が存在しません」というメッセージで失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 10:10:10764ブラウズ

Why Does My PostgreSQL DELETE Statement in Java Fail with

Postgresql エラー: Java DELETE 操作で「列が存在しません」

Java と PostgreSQL を使用して DELETE 操作を試行すると、次のエラーが発生する可能性があります。エラー「列 'column_name' が存在しません。」この問題は、問題の列名に大文字が含まれている場合に発生します。

PostgreSQL では、データベース識別子 (テーブル名や列名など) に大文字が含まれている場合は、引用符で囲む必要があります。これは、デフォルトのスキーマ検索パスでは大文字と小文字が区別されず、引用符で囲むことで確実に正確な名前が使用されるためです。

解決策:

エラーを解決するには、単純にSQL ステートメント内の列名を二重引用符で囲みます:

String stm = "DELETE FROM hostdetails WHERE \"MAC\" = 'kzhdf'";

代わりに、文字列を使用することもできます。引用符で囲まれた列名を持つ SQL ステートメントを動的に構築するための補間:

String column = "MAC";
String stm = String.format("DELETE FROM hostdetails WHERE \"%s\" = 'kzhdf'", column);

追加の考慮事項:

プリペアド ステートメントを使用する場合は、クエリ パラメーターの設定を避けることをお勧めします。 SQL 文字列に直接記述します。代わりに、PreparedStatement のメソッドを使用してパラメータをバインドします。

pst.setString(1, "kzhdf");

これにより、潜在的な SQL インジェクションの脆弱性が防止され、コードがより保守しやすくなります。

以上がJava での PostgreSQL DELETE ステートメントが「列が存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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