我正在尝试从DB获得结果
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)
)
谢谢!
答案 0 :(得分:11)
我认为你没有选择realdate
。您正在选择TO_CHAR (realdate, 'YYYYMMDD')
,该列将获得该名称。你可以这样做:
TO_CHAR (realdate, 'YYYYMMDD') as myrealdate
并选择它。 (使用`rs.getString("myrealdate")
,而不是realdate
)
答案 1 :(得分:4)
realdate
子句中没有列SELECT
。您选择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 :(得分:2)
您在TO_CHAR (realdate, 'YYYYMMDD')
字段上选择了REALDATE
功能,而不是字段本身。为其添加别名并使用该别名来检索结果。
SELECT TO_CHAR (realdate, 'YYYYMMDD') as realdate_str, ....
rs.getString("realdate_str");
答案 3 :(得分:0)
“realdate”不在您的选择查询中 像这样进行查询
String strCommand = "select REALDATE, PURCHASE_PRICE, SELLING_PRICE from CURRENCY_VI where RATE_NAME='EUR'";