0

我在尝试使用 rs.getString("COL1") 访问我的结果集时收到此错误com.ibm.db2.jcc.b.SqlException: Invalid argument: unknown column name COL1 。
我的 SQL 查询是:从 table1 中选择 UPPER(COL1)。 相同的查询和 Java 代码在DB2 v8(Type 2 驱动程序)上运行良好,但在与DB2 v9(Type 4 驱动程序)一起使用时会引发上述异常。

但是,我可以通过添加别名、修改后的查询来解决此错误:从 table1 中选择 UPPER(COL1) COL1。

上述查询适用于 DB2 v8 和 v9。这是否意味着,在 DB2 9 中,我们必须在与 (upper,trim,..) 之类的函数一起使用时提供别名???

谢谢

4

1 回答 1

1

DB2 或 SQL 中的任何内容都不需要函数的列名是特定值。

可能是早期的驱动程序(甚至是 t2 驱动程序,我通常不会再使用,我自己更喜欢 t4)给了你一个你期望的列名,但我想知道它会给你什么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 回答