首頁 >資料庫 >mysql教程 >為什麼我的 Java 中的 PostgreSQL DELETE 語句失敗並顯示「列不存在」?

為什麼我的 Java 中的 PostgreSQL DELETE 語句失敗並顯示「列不存在」?

Susan Sarandon
Susan Sarandon原創
2024-12-19 10:10:10766瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn