2013-11-04 31 views
0

我正在WAS 8.0.0.5上开发一个与DB2数据库迭代的应用程序。DB2和ResultSetMetaData - 无法获取列名

我正在使用java.sql.ResultSetMetaData调用getColumnName()类获取列名称。在我的发展中,一切都很好。

ResultSetMetaData rsmd = rs.getMetaData(); 
String columnName = rsmd.getColumnName(i + 1); 

当我尝试安装在WAS 8.0.0.6上而不是获取列名时,我得到了列索引!

连接字符串的驱动程序集是com.ibm.db2.jcc.DB2Driver

正如我侧面说明,我已经证实,而且8.0.0.5使用DB2驱动程序3.62(作品)和8.0 .0.6使用4.12(不起作用)。

出了什么问题?

回答

1

感谢您的回复。

不幸的是,这不是解决方案。行为是返回列索引,而不是查询的标签或列名称本身。

问题是,在WAS JDBC资源上配置的db2jcc.jar版本太旧(版本3.59),我将其替换为4.12,现在它可以工作。

1

在JDBC数据服务器驱动程序第4版中,getColumnName()getColumnLabel()的行为已发生变化。我认为它现在符合JDBC规范。您可以使用连接属性useJDBC4ColumnNameAndLabelSemantics修改此行为,如此处所述:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_c0052593.html

+0

我正在调用'getColumnName()'而不是'getColumnLabel()',并没有意识到行为改变。谢谢你指出我。 –