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