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

しかし、それでもなお、上記の問題の解決策を知ることは素晴らしいことです。

関連する問題