web-dev-qa-db-ja.com

「Java.sql.SQLException:無効な列名」と表示される理由

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)
   )
_

ありがとうございました!

8
VextoR

realdateを選択していないと思います。 TO_CHAR (realdate, 'YYYYMMDD')を選択すると、その列にその名前が付けられます。あなたはこのようなことをすることができます:

_TO_CHAR (realdate, 'YYYYMMDD') as myrealdate
_

それを選択します。 (もちろん、realdateではなく、`rs.getString("myrealdate")を使用)

11
Nanne

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ベースであることに注意してください)。

4
Joachim Sauer

フィールド自体ではなく、REALDATEフィールドで関数TO_CHAR (realdate, 'YYYYMMDD')を選択しています。それにエイリアスを追加し、そのエイリアスを使用して結果を取得します。

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

rs.getString("realdate_str");
2
Xavi López

「実際の日付」が選択したクエリに含まれていないこのようなクエリを作成する

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