我已经能够将 PostgreSQL 链接到 java。我已经能够显示表中的所有记录,但是我无法执行删除操作。

这是我的代码:

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

请注意,MAC 是一个字符串字段,以大写字母书写。该字段 确实存在于表中。

我得到的错误:

严重:错误:“mac”列不存在

最佳答案

当涉及到带有大写字母的 Postgresql 和实体名称(表、列等)时,您需要通过将其放在“”中来“转义”该词。请引用 the documentation 关于这个特定主题。所以,你的例子会写成这样:
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();

关于sql - 错误 : Column does not exist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39398977/

10-15 18:50