0

rs.getString ( "COL1") .
私の SQL クエリは次のとおりです。table1 から UPPER(COL1) を選択します。 同じクエリと Java コードはDB2 v8 (タイプ 2 ドライバー)で正常に動作しますが、 DB2 v9 (タイプ 4 ドライバー)で使用すると上記の例外がスローされます。

ただし、エイリアスを追加してクエリを変更することで、このエラーを解決できます:テーブル 1から UPPER(COL1) COL1 を選択します。

上記のクエリは、DB2 v8 と v9 の両方で動作します。これは、DB2 9 では、(upper,trim,..) のような関数を使用するときにエイリアスを提供する必要があるということですか???

ありがとう

4

1 に答える 1

1

DB2 または SQL では、関数の列名が特定の値である必要はありません。

以前のドライバー (または、私自身は t4 を好み、通常はもう使用しない t2 ドライバーでさえも) が期待した列名を付けた可能性がありますが、それがcol1 | '.' | col2.

あなたのクエリは、実際にそれを機能させるために必要なものでなければなりません:

select upper(col1) as col1 from table1

これにより、列名が であることが保証されますcol1

クエリの列名が本当に知りたい場合は、次の呼び出しで結果セットのメタ データを取得できます (例のみ)。

ResultSet rs = <get your result set here>;
ResultSetMeatData meta = rs.getMetaData();
for (int i = 1; i < meta.getColumnCount(); i++) {
    System.out.println (getColumnName (i));
}

ただし、as句を使用して、名前が期待どおりであることを確認する必要があります。

于 2009-11-20T06:39:41.587 に答える