错误:列不存在

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”不存在。
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();

@user2128318 非常高兴能够帮助到您。 - Jordan S. Jones
1
如果查询中的值是静态的,那么在没有参数的情况下执行它是完全可以的(尽管这时你实际上不需要一个PreparedStatement)。 - Mark Rotteveel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接