4

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

这是我的代码:

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

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

我得到的错误:

严重:错误:列“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 回答