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:invalid column name"、なぜですか?
rs.getString("realdate")
がなければ、すべてが正常に機能します。
実際、テーブルにはこの列があります
_ CREATE TABLE "GPB"."CURRENCY_VI"
( "REALDATE" DATE,
"PURCHASE_PRICE" FLOAT(126),
"SELLING_PRICE " FLOAT(126),
"RATE_NAME" VARCHAR2(20 BYTE)
)
_
ありがとうございました!
realdate
を選択していないと思います。 TO_CHAR (realdate, 'YYYYMMDD')
を選択すると、その列にその名前が付けられます。あなたはこのようなことをすることができます:
_TO_CHAR (realdate, 'YYYYMMDD') as myrealdate
_
それを選択します。 (もちろん、realdate
ではなく、`rs.getString("myrealdate")
を使用)
realdate
句に列SELECT
がありません。 TO_CHAR (realdate, 'YYYYMMDD')
を選択します。これはnot同じものです。 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ベースであることに注意してください)。
フィールド自体ではなく、REALDATE
フィールドで関数TO_CHAR (realdate, 'YYYYMMDD')
を選択しています。それにエイリアスを追加し、そのエイリアスを使用して結果を取得します。
SELECT TO_CHAR (realdate, 'YYYYMMDD') as realdate_str, ....
rs.getString("realdate_str");
「実際の日付」が選択したクエリに含まれていないこのようなクエリを作成する
String strCommand = "select REALDATE, PURCHASE_PRICE, SELLING_PRICE from CURRENCY_VI where RATE_NAME='EUR'";