4

PostgreSQL を Java にリンクできました。テーブル内のすべてのレコードを表示できましたが、削除操作を実行できませんでした。

これが私のコードです:

con = DriverManager.getConnection(url, user, password);
String stm = "DELETE FROM hostdetails WHERE MAC = 'kzhdf'";
pst = con.prepareStatement(stm);
pst.executeUpdate(); 

MAC は文字列フィールドであり、大文字で書かれていることに注意してください。このフィールドテーブルに存在します。

私が得ているエラー:

SEVERE: エラー: 列 "mac" が存在しません

4

1 に答える 1

10

Postgresql およびエンティティ名 (テーブル、列など) に大文字を使用する場合は、単語を "" で囲んで "エスケープ" する必要があります。この特定の主題に関するドキュメントを参照してください。したがって、例は次のように記述されます。

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

余談ですが、準備済みステートメントを使用していることを考えると、SQL ステートメントで値を直接設定しないでください。

con = DriverManager.getConnection(url, user, password);
String stm = "DELETE FROM hostdetails WHERE \"MAC\" = ?";
pst = con.prepareStatement(stm);
pst.setString(1, "kzhdf");
pst.executeUpdate();
于 2013-03-07T16:12:17.133 に答える