错误:列不存在

时间:2013-03-07 16:07:09

标签: sql postgresql jdbc quoted-identifier

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

这是我的代码:

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

请注意,MAC是字符串字段,并以大写字母书写。此字段确实存在于表格中。

我得到的错误:

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

1 个答案:

答案 0 :(得分:10)

对于带有大写字母的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();