2011-09-15 47 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"); 
相关问题