【问题标题】:com.ibm.db2.jcc.b.SqlException: Invalid argument: unknown column name COL1com.ibm.db2.jcc.b.SqlException:无效参数:未知列名 COL1
【发布时间】:2009-11-20 06:28:59
【问题描述】:

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

但是我可以通过添加别名来解决此错误, 修改后的查询:Select UPPER(COL1) COL1 from table1.

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

谢谢

【问题讨论】:

    标签: exception db2 invalid-argument


    【解决方案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 子句来确保名称符合预期。

    【讨论】:

      猜你喜欢
      • 2013-04-05
      • 2013-09-03
      • 2020-04-27
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多