Какой тип данных Java драйвер Oracle JDBC назначает типу данных Oracle SQL NUMERIC
? Это зависит от размера типа NUMERIC
?
Как уже говорили другие: драйвер отображает все в BigDecimal, даже если он определен как NUMBER (38) (который может быть сопоставлен с BigInteger)
Но это довольно легко узнать что отображает драйвер. Просто выполните getObject () в столбце ResultSet и посмотрите, какой класс сгенерировал драйвер.
Примерно так:
ResultSet rs = statement.executeQuery("select the_number_column from the_table"); if (rs.next()) { Object o = rs.getObject(1); System.out.println("Class: " + o.getClass().getName()); }
Это было давно, но я считаю, что в Java это БОЛЬШОЙ. Это BigDecimal. Я помню classcastexception, с которым вы могли бы столкнуться, подсказали бы ...
Согласно документации Oracle это java.math.BigDecimal
.
"но мой приведенный к BigDecimal бросает ClassCastException "
Вы пробовали использовать oracle.sql.NUMBER
?