我在尝试使用rs访问我的resultSet时收到此错误 com.ibm.db2.jcc.b.SqlException:无效参数:未知列 命名COL1 。的getString( “COL1”)。
我的SQL查询是:从table1中选择UPPER(COL1)。
相同的查询和Java代码与 DB2 v8(类型2驱动程序)一起正常工作,但在使用 DB2 v9(Type 4驱动程序)时抛出上述异常。 < / p>
但是我可以通过添加别名来解决此错误, 修改后的查询:从表1中选择UPPER(COL1)COL1。
上述查询适用于DB2 v8和v9。 这是否意味着,在DB2 9中,我们必须在使用像(upper,trim,..)等函数时提供一个别名???
感谢
答案 0 :(得分:1)
DB2或SQL中的任何内容都不要求函数的列名是特定值。
可能是早期的驱动程序(甚至是t2驱动程序,我通常不再使用它,更喜欢自己的t4)给你一个你期望的列名但我想知道它会给你{{1} }。
您的查询确实 应该是您必须使其工作的原因:
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));
}
子句来确保名称符合预期。