2011-09-15 16 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

のようなウルクエリを作るウル選択クエリではありません。 TO_CHAR (realdate, 'YYYYMMDD')を選択していて、その列がその名前を取得しています。あなたは次のようなことをすることができます:

TO_CHAR (realdate, 'YYYYMMDD') as myrealdate 

そしてそれを選択してください。 (`rs.getString("myrealdate")の小文字で、realdateではありません)

0

「realdateは」 は、私はあなたが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を動作しない場合:rs.getString(1)は(JDBCのインデックスであることに注意してください:

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

は、別の方法としては、カラムインデックスベースの選択を使用することができます常に1ベース)。

2

REALDATEフィールドでは、機能TO_CHAR (realdate, 'YYYYMMDD')を選択していますが、フィールド自体は選択していません。エイリアスを追加し、そのエイリアスを使用して結果を取得します。

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

rs.getString("realdate_str");