Re[4]: Как узнать/повлиять на преобразования данных в ODBC
От: KRA Украина  
Дата: 13.10.04 09:02
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Здравствуйте, Аноним, Вы писали:


А>>Это нужно сделать в ODBC


ST>Не уверен, что такое возможно. ODBC на то и ODBC, чтобы скрывать такие специфичные для Oracle детали, как NLS_LANG.

Как раз потому, что ODBC скрывает специфичные вещи, это должно быть возможно. Т.е. должна быть возможность (независимо от используемой СУБД и драйвера) задать какую локаль использовать при конвертации. В этом и вопрос.
Как по мне, то логичней всего было бы чтобы драйвер смотрел, какая локаль установлена в libc, но, к сожалению, некоторые (в часности родной ораклиный под Винду) этого не делают.

ST>>>А почему нельзя сразу достать значение как double?

А>>Дело в том, что заранее неизвесно в каком виде пользователь захочет забрать данные.

ST>Что понимается под "забрать данные"? Как ты ему отдашь, так он и заберет. Какая задача решается?

Пишется объектно-ориентированная оболочка для ODBC. Интерфейс — аля jdbc.
Я вычитываю значение колонки из БД через ODBC в свой внутренний буффер, а пользователь может его забирать разными функциями getInt, getDouble, getString etc.
В доках по ODBC написано, что для колонки типа DECIMAL
преобразование по умолчанию к CHAR[]. Соответственно и во внутреннем буфере я его храню как CHAR[]. Только вот возникла проблема, что неясно какую локаль использует драйвер когда ложит данные в буфер.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.