替换为不推荐使用的类提供的扩展方法oracle.sql.struct
问题描述:
我们如何访问由oracle.sql.struct提供的扩展方法,因为现在不推荐使用它。基本上我需要的是由java.sql.struct对象返回的变量名称。现在我正在通过索引检索值,这是不推荐的。替换为不推荐使用的类提供的扩展方法oracle.sql.struct
我想要做这样的事情:
StructDescriptor descriptor = struct.getDescriptor();
ResultSetMetaData metaData = descriptor.getMetaData();
metaData.getColumnName(id);
请指教。
答
注意:这里我使用的是DashDB。我的依赖关系中有db2jcc jar。
我正在使用下面的代码段来解决问题。
cstmt.registerOutParameter(1, java.sql.Types.STRUCT);
java.sql.Struct outputStruct = (java.sql.Struct) cstmt.getObject(1);
com.ibm.db2.jcc.am.aq oracle_struct=(com.ibm.db2.jcc.am.aq)outputStruct;
ResultSetMetaData metaData = oracle_struct.getMetaData();
Map<String,Object> attributeMap = new HashMap<>();
int idx = 1;
for (Object attribute : structAttributes){
if (idx==(metaData.getColumnCount()+1)){break;}
attributeMap.put(metaData.getColumnLabel(idx),attribute);
idx++;
}
但仍然很高兴知道上述问题的解决方案。