Проблема:
При попытке извлечь данные из ячейки столбца, имеющего тип "NUMERIC" с помощью метода getObject объекта ResultSet (или просто при попытке просмотра данных в таблице БД Transbase с помощью вкладки "Services" в Netbeans, который видимо тоже при извлечении данных пользуется методом ResultSet.getObject) вылетает исключение вида:
В логах ODBC-драйвера трансбэйза та же ошибка, однако причина её всё равно не очевидна:
Решение:
Если тип столбца - "NUMERIC", для извлечения данных использовать метод getFloat вместо универсального getObject (в примере ниже resMD - объект типа ResultSetMetaData, полученный вызовом sourceDataRS.getMetaData(), а sourceDataRS - собственно ResultSet, из которого получаются данные):
При попытке извлечь данные из ячейки столбца, имеющего тип "NUMERIC" с помощью метода getObject объекта ResultSet (или просто при попытке просмотра данных в таблице БД Transbase с помощью вкладки "Services" в Netbeans, который видимо тоже при извлечении данных пользуется методом ResultSet.getObject) вылетает исключение вида:
java.sql.SQLException: [Transaction][ODBC Transbase Driver][TEST_DB] unknown: FieldId=5 ???
В логах ODBC-драйвера трансбэйза та же ошибка, однако причина её всё равно не очевидна:
[ODBC Transbase Driver][E:\utmp\seibt\tbodbc3x\trunk\api\sqlcolattribute.c][SQLColAttribute][419]unknown: FieldId=5 ???
[ODBC Transbase Driver][E:\utmp\seibt\tbodbc3x\trunk\api\sqlcolattribute.c][SQLColAttribute][431]Stmt=$0075F200 / Col=27 / FieldId=5 [SQL_DESC_???] <- 0 (len:0 / max: 0)
Решение:
Если тип столбца - "NUMERIC", для извлечения данных использовать метод getFloat вместо универсального getObject (в примере ниже resMD - объект типа ResultSetMetaData, полученный вызовом sourceDataRS.getMetaData(), а sourceDataRS - собственно ResultSet, из которого получаются данные):
if(resMD.getColumnType(i)==Types.NUMERIC)
row[i] = sourceDataRS.getFloat(i);
else
row[i] = sourceDataRS.getObject(i);
Комментариев нет:
Отправить комментарий