|
|
|
работа с ResultSetMetaData в Java
|
|||
|---|---|---|---|
|
#18+
Столкнулся с такой проблемкой... Плотно работаю в Java с ResultSetMetaData объектом, это тот который вытаскивается из ResultSet. Так вот в этом объекте есть метод getColumnType(i) который для заданного столбца возвращает его тип. Например для Varchar2 это будет 12, а для всех числовых типов, будь то Float, Number, Number(x), Number(x,x), Integer возвращается тип равный 2. У меня стояла задача различать эти числовые типы более детально...на "Целый", "С плавающей точкой", "С фиксированной точкой". C помощью методов объекта ResultSetMetaData, таких как getPrecision(i) и getScale(i) удалось этого добиться (см. след. код) ... if ((rsmd.getPrecision(i)==0)&&(rsmd.getScale(i)!=0)){ types.put(new Integer(i), new Integer(INTEGER)); } if ((rsmd.getPrecision(i)!=0)&&(rsmd.getScale(i)!=0)){ types.put(new Integer(i), new Integer(NUMBER)); } if (((rsmd.getPrecision(i)<0)&&(rsmd.getScale(i)!=0))||((rsmd.getPrecision(i)==0)&&(rsmd.getScale(i)==0))){ types.put(new Integer(i), new Integer(FLOAT)); } ... И действительно эта схема работала если вытаскивать данные только из одной таблички. Но как только начинаются запросы на основе нескольких таблиц или с использованием функции count, вся эта схема позволяющая разделить типы, перестает работать. Все числовые поля определяются как "Float", т.е. у них у всех Precision = 0 и Scale = 0. Пробовал cast, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. Кто-нибудь знает почему и как с этим бороться? PS:используется thin driver для Oracle. Помогите плиз, совсем запутался с этими типами :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 20:05:46 |
|
||
|
работа с ResultSetMetaData в Java
|
|||
|---|---|---|---|
|
#18+
SheffСтолкнулся с такой проблемкой... Плотно работаю в Java с ResultSetMetaData объектом, это тот который вытаскивается из ResultSet. Так вот в этом объекте есть метод getColumnType(i) который для заданного столбца возвращает его тип. Например для Varchar2 это будет 12, а для всех числовых типов, будь то Float, Number, Number(x), Number(x,x), Integer возвращается тип равный 2. У меня стояла задача различать эти числовые типы более детально...на "Целый", "С плавающей точкой", "С фиксированной точкой". C помощью методов объекта ResultSetMetaData, таких как getPrecision(i) и getScale(i) удалось этого добиться (см. след. код) ... if ((rsmd.getPrecision(i)==0)&&(rsmd.getScale(i)!=0)){ types.put(new Integer(i), new Integer(INTEGER)); } if ((rsmd.getPrecision(i)!=0)&&(rsmd.getScale(i)!=0)){ types.put(new Integer(i), new Integer(NUMBER)); } if (((rsmd.getPrecision(i)<0)&&(rsmd.getScale(i)!=0))||((rsmd.getPrecision(i)==0)&&(rsmd.getScale(i)==0))){ types.put(new Integer(i), new Integer(FLOAT)); } ... И действительно эта схема работала если вытаскивать данные только из одной таблички. Но как только начинаются запросы на основе нескольких таблиц или с использованием функции count, вся эта схема позволяющая разделить типы, перестает работать. Все числовые поля определяются как "Float", т.е. у них у всех Precision = 0 и Scale = 0. Пробовал cast, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. Кто-нибудь знает почему и как с этим бороться? PS:используется thin driver для Oracle. Помогите плиз, совсем запутался с этими типами :( я удивляюсь, как данная схема вообще работает (не твоя, а Oracle-maded) Если посмотришь исходный код реализации, то очень сильно удивишься (поэтому я юзаю dbms_sql) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 20:19:06 |
|
||
|
работа с ResultSetMetaData в Java
|
|||
|---|---|---|---|
|
#18+
zя удивляюсь, как данная схема вообще работает (не твоя, а Oracle-maded) Если посмотришь исходный код реализации, то очень сильно удивишься (поэтому я юзаю dbms_sql) И сидишь с возможностями 7-го Оракла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 21:26:32 |
|
||
|
работа с ResultSetMetaData в Java
|
|||
|---|---|---|---|
|
#18+
\\ zя удивляюсь, как данная схема вообще работает (не твоя, а Oracle-maded) Если посмотришь исходный код реализации, то очень сильно удивишься (поэтому я юзаю dbms_sql) И сидишь с возможностями 7-го Оракла? Приведенный автором темы код откровением не является. Я лично с трудом могу представить когда и зачем может потребоваться такой подход. Тем не менее к чему вы упомянули Oracle 7-й версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 22:19:01 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2146728]: |
0ms |
get settings: |
20ms |
get forum list: |
29ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
78ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
85ms |
get tp. blocked users: |
3ms |
| others: | 310ms |
| total: | 570ms |

| 0 / 0 |
