Java DB2和ResultSetMetaData-无法获取列名

Java DB2和ResultSetMetaData-无法获取列名,java,database,db2,Java,Database,Db2,我正在WAS8.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

我正在WAS8.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(不工作)


有什么问题?

JDBC版本4的IBM数据服务器驱动程序中
getColumnName()
getColumnLabel()
的行为发生了更改。我相信它现在符合JDBC规范。您可以使用连接属性
useJDBC4ColumnNameAndLabelSemantics
修改此行为,如下所述:

谢谢您的回复

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


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

我调用的是
getColumnName()
而不是
getColumnLabel()
,并且没有意识到行为的变化。谢谢你指点我。