Тип данных объекта RowSet

Автор ost, 15 апреля 2017, 17:50

0 Пользователи и 1 гость просматривают эту тему.

ost

Доброго.

Не могу сообразить как определить тип данных, содержащихся в RowSet.

Использую базу данных SQLite через ODBC-драйвер http://www.ch-werner.de/sqliteodbc/sqliteodbc_w64.exe
Поля каждой записи базы могут содержать данные трех типов: INTEGER, TEXT, REAL. Ну и дату в виде "YYYY-MM-DD"

Для перебора полей объекта RowSet использую следующий код, вызываемый в цикле:
oRowSet.getString(i)

Насколько понимаю, .getString() приводит все данные к типу String. Это, в свою очередь, вызывает проблемы при вставке этих данных в лист LO Calc.

Научите, пожалуйста, способу узнать тип данных, содержащихся в RowSet или как-нибудь иначе избавиться от проблем со вставкой в лист LO Calc числовых данных в виде текста.

Windows 7 (x64) LibreOffice 5.3.1.2


mikekaganski

Я не знаю тонкостей работы с SQLite, но если возможно экспортировать из неё в XML-формат ADO Rowset ([MS-PRSTFR]), то потом оттуда можно импортировать напрямую в calc (я совсем недавно добавил эту возможность в master - будет доступно в 5.4, но можно загрузить отдельно XSLT-фильтр и использовать с любой версией).
С уважением,
Михаил Каганский

economist

SQLite хранит всё как "текст". Точнее просто "как есть".
Даже ошибившись с кодировкой текста - можно всегда получить исходное содержимое. 
Проверка типа, если она будет честной - она вернет "Текст", и будет права.   

Преобразованием типов уже внутри приложения - занимается
сам ODBC-драйвер, и насколько я знаю - неплохо.

Иногда (да и почти всегда, хлобысну уже) - проще импортировать как есть, а потом конвертнуть, как надо.
И SQLite - самая та БД, с которой это реже всего надо. 

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ost

Цитата: mikekaganski от 15 апреля 2017, 16:00экспортировать из неё в XML-формат ADO Rowset ([MS-PRSTFR])
Изучать ADO ради решения моих задач - это слегка избыточно. =)

ost

Цитата: economist от 16 апреля 2017, 18:07импортировать как есть, а потом конвертнуть
Так и поступил. Мне проще криворуко накостылять конвертацию средствами Basic, чем разбираться с типами в БД. =) Особенно с учетом того, что база работает только с текстом.