2011-09-15 72 views
8

我試圖從DB爲什麼它說:「值java.sql.SQLException:無效的列名」

得到的結果
 String strCommand = "select TO_CHAR (realdate, 'YYYYMMDD'), PURCHASE_PRICE, SELLING_PRICE from CURRENCY_VI where RATE_NAME='EUR'"; 

     cs.setQueryTimeout(m_nTimeout); 

     ResultSet rs = cs.executeQuery(strCommand); 

     while (rs.next()){ 
      System.out.println("!!!\n\nDATE = " + rs.getString("realdate") + " PURCHASE_PRICE = " + rs.getString("PURCHASE_PRICE") + " SELLING_PRICE = " + rs.getString("SELLING_PRICE")); 
     } 

它說,rs.getString("realdate") - 「值java.sql.SQLException:無效的列名 「,爲什麼?

沒有rs.getString("realdate")一切工作正常。

事實上,表中有此列

CREATE TABLE "GPB"."CURRENCY_VI" 
    (   "REALDATE" DATE, 
       "PURCHASE_PRICE" FLOAT(126), 
       "SELLING_PRICE " FLOAT(126), 
       "RATE_NAME" VARCHAR2(20 BYTE) 
    ) 

謝謝!

回答

11

我想你是不會選擇realdate。您正在選擇TO_CHAR (realdate, 'YYYYMMDD'),並且該列獲取該名稱。你可以這樣做:

TO_CHAR (realdate, 'YYYYMMDD') as myrealdate 

並選擇。 (與`rs.getString("myrealdate") ofcourse,而不是realdate

0

「realdate」是不是在烏爾選擇查詢 讓烏爾這樣的查詢

String strCommand = "select REALDATE, PURCHASE_PRICE, SELLING_PRICE from CURRENCY_VI where RATE_NAME='EUR'"; 
4

您的SELECT子句中沒有列realdate。您選擇TO_CHAR (realdate, 'YYYYMMDD'),這是而不是是同樣的事情。您可能需要使用getString("TO_CHAR (realdate, 'YYYYMMDD')")試試,如果不行使用AS給該列的名稱:

select TO_CHAR (realdate, 'YYYYMMDD') AS realdate, PURCHASE_PRICE, SELLING_PRICE from CURRENCY_VI where RATE_NAME='EUR' 

或者您可以使用列指數爲基礎的選擇:rs.getString(1)(請注意,在JDBC索引總是以1爲基礎)。

2

您在REALDATE字段中選擇功能TO_CHAR (realdate, 'YYYYMMDD'),而不是字段本身。向它添加一個別名並使用該別名來檢索結果。

SELECT TO_CHAR (realdate, 'YYYYMMDD') as realdate_str, .... 

rs.getString("realdate_str"); 
相關問題