org.postgresql.util.PSQLException:错误:列" id"不存在 - Java Web Service

时间:2016-09-09 09:01:02

标签: java postgresql jdbc

我正在开发一个疯狂部署的java Web服务。它连接到postgresql数据库。 在这个数据库中,我有一个名为xx_activity的表。其中有一个名为" id"的列,它也是主键。 以下是用于创建表的查询:

CREATE TABLE xx_activity
(
  id serial NOT NULL,
  baseitemid integer
);

要连接到此表,我使用以下java代码:

conn = postgresVoyateDBConnection();
            query = conn.prepareStatement("select id, baseitemid" +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");

            query.setInt(1, id);
            ResultSet rs = query.executeQuery();

但是,当我调用包含此代码的方法时,出现错误:

  

org.postgresql.util.PSQLException:错误:列" id"不存在

     

职位:8

这很令人困惑,因为我当然有这个专栏。我根据this answer添加了转义字符,但它没有解决问题。

另请注意,没有where子句的查询,如:

conn = postgresVoyateDBConnection();
        query = conn.prepareStatement("select id, baseitemid " +
                                        "from xx_activity");

        ResultSet rs = query.executeQuery();

完美地工作。

我也试过没有使用转义字符,但它给出了同样的错误。我也检查了pgadmin,列名中没有尾随空格,也没有涉及任何大写字母(在这种情况下,另一个选择查询不应该有效吗?)。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

解决了这个问题,问题是缺少空间。在查询的第一行之后,需要有一个空格如下:

query = conn.prepareStatement("select id, baseitemid " +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");

编辑id不需要转义字符;所以最后的答案应该是:

 query = conn.prepareStatement("select id, baseitemid " +
                                                "from xx_activity " +
                                                "where id = ? ");