com.ibm.db2.jcc.b.SqlException:无效参数:未知列名 COL1
Posted
技术标签:
【中文标题】com.ibm.db2.jcc.b.SqlException:无效参数:未知列名 COL1【英文标题】:com.ibm.db2.jcc.b.SqlException: Invalid argument: unknown column name 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,..) 之类的函数一起使用时提供别名???
谢谢
【问题讨论】:
【参考方案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
子句来确保名称符合预期。
【讨论】:
以上是关于com.ibm.db2.jcc.b.SqlException:无效参数:未知列名 COL1的主要内容,如果未能解决你的问题,请参考以下文章