ResultSetMetaData возвращает BigDecimal вместо int - PullRequest
4 голосов
/ 14 сентября 2009

Нужна помощь в отношении метаданных jdbc. Я использую ResultsetMetaData для получения метаданных столбцов таблицы на Oracle10g . Я использую ojdbc14.jar. В идентификаторе таблицы есть поле, объявленное как Number. Это поле читается с помощью jdbc во время выполнения, чтобы получить его атрибуты метаданных. ResultSetMetaData.getColumnClassName () возвращает java.math.BigDecimal , в то время как я ожидаю, что это будет тип Integer или int, long или Long. Я даже пытался создать таблицу с оператором с явным определением типа int для столбца идентификатора как

CREATE TABLE COST_DETAILS ( ID **INT** Primary Key...

но ResultSetMetaData по-прежнему возвращает BigDecimal для столбца ID.

Есть ли способ создать таблицу с каким-либо конкретным типом столбца, чтобы он запускал тип int / long?

или ResultsetMetaData всегда возвращает BigDecimal для Oracle.

Ответы [ 2 ]

6 голосов
/ 14 сентября 2009

Я думаю, что числа Oracle всегда будут отображаться в BigDecimal, поскольку Oracle не хранит их в виде двоичного целого, поэтому это точное отображение. Типы данных Oracle и Oracle JDBC Вы можете сделать числа с плавающей запятой двоичными

0 голосов
/ 14 сентября 2009

Нет. Это зависит от водителя.

Вы можете иметь что-то вроде:

if( class == "BigDecimal" ) {
    return "Integer" 
} else if ( .... 

И вернуть целое число вместо bigdecimal. Это то, что делает большинство людей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...