0

我正在 WAS 8.0.0.5 上开发一个与 DB2 数据库交互的应用程序。

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

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

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

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

正如我的旁注,我已经确认 WAS 8.0.0.5 使用 DB2 驱动程序 3.62(有效),而 8.0.0.6 使用 4.12(无效)。

怎么了?

4

2 回答 2

1

感谢您的回复。

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

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

于 2013-11-05T09:27:28.373 回答
1

IBM Data Server Driver for 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

于 2013-11-04T23:47:43.587 回答