JDBC を使用して空間データベース アプリを開発していますが、データベースに挿入したポリゴンのコーディネーターを取得する際に問題が発生しました。取得したのは、ベース タイプ Number の oracle.sql.Array です。コーディネーターを文字列配列に入れ、それらを 1 つずつ取得してマップ上にペイントします
SHAPE.SDO_ORDINATES
NUMBER(79,68,184,125,179,133,189,138,139,229,131,225,127,233,21,175,26,168,18,163,67,73,74,76)
以下は私のコードです:
try{
Statement stmt = conn.createStatement();
String fetchBuidling = "select a.shape.sdo_ordinates from buildings a";
ResultSet rs = stmt.executeQuery(fetchBuidling);
while(rs.next()){
ResultSetMetaData metaData = rs.getMetaData();
int columns = metaData.getColumnCount();
Array coordsInfo = rs.getArray(columns);
String[] vertice = (String[]) coordsInfo.getArray();
for(int i = 0 ; i < vertice.length; i++){
System.out.println(vertice[i]);
}
}
エラーは"java.lang.ClassCastException: [Ljava.math.BigDecimal; cannot be cast to [Ljava.lang.String;"
次のとおりです。Oracle のドキュメントのコード ブロックを使用しましたが、2 番目の getArray() は意味がありません
。 /javase/tutorial/jdbc/basics/array.html#retriving_array
しかし、2 番目の getArray() がなければ、コードをコンパイルすることさえできません。