2017-07-31 44 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++; 
} 

但仍然很高興知道上述問題的解決方案。

相關問題