Как читать числовые / десятичные / денежные столбцы с SQL Server? - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь прочитать числовые / десятичные / денежные столбцы из SQL Server через ODBC следующим образом:

SQL_NUMERIC_STRUCT decimal;
SQLGetData(hSqlStmt, iCol, SQL_C_NUMERIC, &decimal, sizeof(decimal), &indicator);

Все эти типы возвращаются как структура SQL_NUMERIC_STRUCT, и я указываю тип SQL_C_NUMERIC для SQLGetData () API.

В базе данных столбец определен, например, как decimal(18, 4) или money.Но проблема в том, что для возвращаемых данных decimal.precision всегда равно 38 (максимально возможное значение), а decimal.scale всегда равно нулю.Таким образом, если фактическое сохраненное число равно 12,65 , возвращаемое значение в структуре SQL_NUMERIC_STRUCT равно 12 .Так что дробная часть просто отбрасывается по очень странной причине.

Что я могу делать не так?

1 Ответ

0 голосов
/ 08 февраля 2012

ОК, эта статья объясняет проблему. Решение настолько громоздко, что я решил вообще не использовать SQL_NUMERIC_STRUCT, под влиянием этого поста . Теперь я указываю SQL_C_WCHAR (SQL_C_CHAR тоже подойдет) и считываю числовые / десятичные / денежные столбцы как текстовые строки напрямую. Похоже, драйвер выполняет преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...