问题描述
我正在为IBM DB2 Z / OS(版本4.13.127)使用jdbc驱动程序,并且试图从元数据中获取表信息。 我的行为与预期的行为不同:我没有获取列名,而是获得了列索引。
ds=new com.ibm.db2.jcc.DB2SimpleDataSource();
((com.ibm.db2.jcc.DB2BaseDataSource) ds).setServerName(ip);
((com.ibm.db2.jcc.DB2BaseDataSource) ds).setPortNumber(portNumber);
((com.ibm.db2.jcc.DB2BaseDataSource) ds).setDatabaseName(databaseName);
((com.ibm.db2.jcc.DB2BaseDataSource) ds).setDriverType(4);
con = ds.getConnection(user,password);
DatabaseMetaData Metadata = con.getMetaData();
rs = Metadata.getTables(null,"MY_SCHEMA","MY_TABLE",null);
int columnsNumber = rs.getMetaData().getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columnsNumber; i++) {
if (i > 1) System.out.print(",");
String columnValue = rs.getString(i);
System.out.print(columnValue + " " + rs.getMetaData().getColumnName(i));
}
}
结果显示在下面:
null 1,MY_SCHEMA 2,MY_TABLE 3,TABLE 4,5,null 6,null 7,null 8,null 9,null 10
我期望getColumnName
方法返回字符串属性(table_name,schema_name等)。
它特定于db2 jdbc驱动程序吗?
解决方法
有关使用Db2特定驱动程序属性useJDBC4ColumnNameAndLabelSemantics
的信息,请参见this IBM technote。