2012-11-08 37 views
0

我想從cityHotelData表中獲取串聯的citycode-hotelcode對。 (城市代碼和酒店代碼在城市酒店數據表中是varchar)在JDBC中使用Postgres中的串聯列運行select錯誤

當我運行下面的查詢使用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; 
    } 
+0

您的錯誤消息說'ciycode'和您的查詢說'citycode'。請剪切並粘貼查詢和錯誤消除拼寫錯誤。 –

+3

此外,請發佈您的Java代碼爲JDBC查詢。 –

+0

@保羅:這是陳述保羅。 – namalfernandolk

回答

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

非常感謝您回答mvp mut itfails說org.postgresql.util.PSQLException:在此ResultSet中未找到列名(vendorid ||' - '|| hotelcode)AS cityhotel。 – namalfernandolk

+1

你可以顯示你用來訪問數據庫的Java代碼嗎? – mvp

+0

@ mvp:添加了java代碼 – namalfernandolk

1

我不知道爲什麼這個問題正在發生的事情 - 這顯然與查詢的JDBC準備一個問題,但我們還沒有完整的圖片,沒有看到查詢的起源以及如何傳遞到executeStatementQuery

一個簡單的替代方法是使用以下查詢:

select citycode, hotelcode from cityHotelData 

然後,只需在java層串聯的那些值與-代替。