使用JDBC在Postgres中使用连续列运行select时出错

时间:2012-11-08 06:03:27

标签: java postgresql jdbc

我想从cityHotelData Table获取连接的citycode-hotelcode对。 (citycode和hotelcode是cityHotelData Table中的varchar)

当我使用phpPgAdmin运行以下查询时,它可以正常工作。

select citycode || '-' || hotelcode from cityHotelData

但是当我使用JDBC在java中运行它时会出现以下错误。

org.postgresql.util.PSQLException: The column name citycode || '-' || hotelcode was not found in this ResultSet.

我正在使用PostgreSQL 8.0.26.

Java代码:

Connection conn = DriverManager.getConnection(ConnString,ConnUser,ConnPassword);

public ResultSet executeStatementQuery(String sql) throws Exception {

        this.qry = sql;

        try {
            stmt    = conn.createStatement(); // Statement stmt
            rs      = stmt.executeQuery(sql); //ResultSet rs
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
            closeResultSet();
        } catch (Exception cnfe) {
            closeResultSet();
            cnfe.printStackTrace();
        }
        return rs;
    }

2 个答案:

答案 0 :(得分:4)

试试这个:

SELECT (citycode || '-' || hotelcode) AS cityhotel
FROM cityHotelData

修改: 要排除任何Java问题,请尝试使用此Java代码:

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
    "SELECT (citycode || '-' || hotelcode) AS cityhotel FROM cityHotelData"
);
while (rs.next()) {
    System.out.print("City-hotel code: ");
    System.out.println(rs.getString(1));
}
rs.close();
st.close();

答案 1 :(得分:1)

我不确定为什么会出现这个问题 - 这显然是查询的JDBC准备工作的一个问题,但我们仍然没有完整的图片而没有看到查询的确切位置以及它如何传递到{{1 }}

一个简单的替代方法是使用此查询:

executeStatementQuery

然后只需将这些值与java层中的select citycode, hotelcode from cityHotelData 连接起来。