2013-03-07 101 views
4

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

这里是我的代码:

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

请注意,MAC是一个字符串字段,并用大写字母表示。该字段的确存在

,我得到的错误:

严重:错误:列“陆委会”不存在

回答

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(); 
+1

谢谢乔丹S.琼斯 - 它工作得非常好:)) – user2128318 2013-03-07 16:15:48

+0

@ user2128318很高兴有帮助。 – 2013-03-07 16:18:04

+1

如果查询中的值是静态的,那么在没有参数的情况下完成它是完全正确的(尽管你并不需要'PreparedStatement') – 2013-03-07 19:41:19