错误:列不存在

use*_*318 4 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(); 
Run Code Online (Sandbox Code Playgroud)

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

我得到的错误:

严重:错误:列"mac"不存在

Jor*_*nes 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();
Run Code Online (Sandbox Code Playgroud)