我正在开发一个与DB2数据库进行迭代的WAS 8.0.0.5上的应用程序。
我使用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(不起作用)。
有什么问题?
答案 0 :(得分: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。
答案 1 :(得分:1)
感谢您的回复。
不幸的是,这不是解决方案。行为是返回列索引,而不是查询的标签或列名称。
问题是在WAS JDBC资源上配置的db2jcc.jar版本太旧了(版本3.59)我将其替换为4.12,现在它可以工作。