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 サイトの他の関連記事を参照してください。