powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
5 сообщений из 5, страница 1 из 1
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
    #33629280
myinter@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER

Код: plaintext
1.
  NO_SEQ                     NUMBER( 1 ) ,
  VALUE                       NUMBER( 12 , 4 ),

Это надо для того, чтобы при выводе в JTable для поля с типом
NUMBER(1) - выводить целое число Integer,
а при выводе поля с типом NUMBER(12,4) - выводить Float

На даный момент все эти поля определяются так

Код: plaintext
1.
2.
3.
4.
5.
6.
Object RetField =  new  Object();

         if  (ColumnTypeName.equals("NUMBER"))
        {
          RetField =  new   Float (rs.getFloat(i));
        }
.....
...
Рейтинг: 0 / 0
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
    #33629432
myinter@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитав доку все разрешилось самособой...
В моделе даных для JTable я перед загрузкой в Vector, вызываю некий метод,
для анализа типов данных..


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        int  RowCount =  0 ;
       rows =  new  Vector();
        while  (rs.next()) 
       {
         RowCount++;
         Vector newRow =  new  Vector();
          for  ( int  i =  1 ; i <= getColumnCount(); i++) 
         {
           newRow.addElement(OPF.PrepareField(rsmd, rs, i));
         }
         rows.addElement(newRow);
       }
Где PrepareField

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
   public  Object PrepareField (ResultSetMetaData rsmd, ResultSet rs,  int  i)
  {
    Object RetField =  new  Object();
     try 
    {
      String ColumnTypeName = rsmd.getColumnTypeName(i);
       int  Scale = rsmd.getScale(i);
       if  (rs.getString(i) !=  null )
      {
         if  ((ColumnTypeName == "CHAR") || (ColumnTypeName == "VARCHAR2"))
        {
          RetField =  new  String(rs.getString(i).trim());
        }
         else   if  (ColumnTypeName.equals("NUMBER") & Scale ==  0 )
        {
          RetField =  new  Integer(rs.getInt(i));
        }
         else   if  (ColumnTypeName.equals("NUMBER") & Scale >  0 )
        {
          RetField =  new   Float (rs.getFloat(i));
        }
         else 
        {
          RetField =  new  String(rs.getString(i).trim());
        }
      }
       else 
      {
         if  (ColumnTypeName.equals("NUMBER") & Scale ==  0 )
        {
          RetField =  new  Integer( 0 );
        }
         else   if  (ColumnTypeName.equals("NUMBER") & Scale >  0 )
        {
          RetField =  new   Float ( 0 );
        }
         else 
        {
          RetField =  new  String("");
        }
      }
    }
     catch  (SQLException ex) 
    {
      OraSQLException.GetSQLException(ex);
    }
     catch  (java.lang.Exception ex) 
    {
      ex.printStackTrace();
    }
     return  RetField;
  }
...
Рейтинг: 0 / 0
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
    #33629490
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже было попробовал, но получил нечто стоящее только в случае непосредственного запроса из таблицы. При самостоятельном же формировании полей Precision и Scale равны 0:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Statement st = con.createStatement();

ResultSet rs = st.executeQuery(
  "select 1 int_value\n" +
  "     , 1.234 float_value\n" +
  "from dual"
);

ResultSetMetaData rsmd = rs.getMetaData();
System.out.println("Cols=" + rsmd.getColumnCount());
 for  ( int  i =  1 ; i <= rsmd.getColumnCount(); i++) {
  System.out.println("ColumnLabel   : " + rsmd.getColumnLabel(i));
  System.out.println("ColumnTypeName: " + rsmd.getColumnTypeName(i));
  System.out.println("Precision     : " + rsmd.getPrecision(i));
  System.out.println("Scale         : " + rsmd.getScale(i));
}
 while  (rs.next()) {
   for  ( int  i =  1 ; i <= rsmd.getColumnCount(); i++) {
    System.out.println(rs.getString(i));
  }
}  
...
Рейтинг: 0 / 0
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
    #33629603
southeast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если не определять, для вывода получать из базы float, а потом форматировать DecimalFormat?
...
Рейтинг: 0 / 0
Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
    #33631693
myinter@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov Я тоже было попробовал,
но получил нечто стоящее только в случае непосредственного запроса из таблицы.
При самостоятельном же формировании полей Precision и Scale равны 0:
Спасибо за дельный совет!
Действительно попробовал так сделать...
и действительно Precision и Scale равны 0.
Учту это при дальнейшей разработке.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как при получении даных с БД Oracle определить размер/точность поля типа NUMBER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]