【问题标题】:Error: Column does not exist错误:列不存在
【发布时间】:2013-02-22 22:24:20
【问题描述】:

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

这是我的代码:

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

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

我得到的错误:

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

【问题讨论】:

    标签: sql postgresql jdbc quoted-identifier


    【解决方案1】:

    当涉及到带有大写字母的 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();
    

    【讨论】:

    • @user2128318 很高兴能提供帮助。
    • 如果查询中的值是静态的,那么不带参数就可以了(虽然那时你并不需要PreparedStatement
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2016-11-20
    相关资源
    最近更新 更多