2017-07-31 42 views
0

我们如何访问由oracle.sql.struct提供的扩展方法,因为现在不推荐使用它。基本上我需要的是由java.sql.struct对象返回的变量名称。现在我正在通过索引检索值,这是不推荐的。替换为不推荐使用的类提供的扩展方法oracle.sql.struct

我想要做这样的事情:

StructDescriptor descriptor = struct.getDescriptor(); 
ResultSetMetaData metaData = descriptor.getMetaData(); 
metaData.getColumnName(id); 

请指教。

回答

0

注意:这里我使用的是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++; 
} 

但仍然很高兴知道上述问题的解决方案。

相关问题