Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ ADO к MSSQL и rs->Fields->GetItem()->Type / 7 сообщений из 7, страница 1 из 1
12.11.2021, 17:29
    #40111442
Badhabit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
Добрый день. Не уверен, что правильно выбрал раздел, но если что перенесут...
Вопрос такой. Из проги на С через ADO подключаюсь к БД MSSQL сервера, делаю запрос, ну и получаю RecordSet.
Я хочу узнать какой тип данных для каждого столбика результирующего рекордсета. Делаю я это через rs->Fields->GetItem(1)->Type... И что интересно для целочисленных типов (adTinyInt, adSmallInt, adInteger, adBigInt, adUnsignedTinyInt, adUnsignedSmallInt, adUnsignedInt, adUnsignedBigInt) все возвращается корректно и для дробных (adSingle, adDouble, adCurrency) - тоже все ОК, а вот для дат (adDate, adDBDate, adDBTimeStamp) почему-то нет... Столбики дат почему-то возвращают тип (adVarWChar, adVarChar)?
Кто-нибудь сталкивался может быть? Есть решение, чтобы нормальный тип определить?
...
Рейтинг: 0 / 0
12.11.2021, 18:18
    #40111467
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
Badhabit,
Тип данных проектируется еще на стадии составления запроса.
Или школьная задачка?
В самой бд какой тип поля? В запросе не меняешь тип?
...
Рейтинг: 0 / 0
12.11.2021, 18:49
    #40111488
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
BadhabitИз проги на С через ADO подключаюсь к БД MSSQL сервера

Для этого есть как минимум два пути: ADO->OLE DB->ODBC->Native Client и ADO->OLE
DB->Native Client. Для начала определись какой из них ты используешь. Потом
тестовыми программками сможешь определить где именно тип преобразуется не так
как ты ожидаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.11.2021, 20:33
    #40111528
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
Badhabit
Столбики дат почему-то возвращают тип (adVarWChar, adVarChar)?

Возвращают куда и как? В смысле какой функцией ты читаешь эти даты?

У ADO (как и у всех остальных интерфейсов) есть общий принцип: тип переменной куда читаем данные желательно чтобы совпадал с типом поля откуда читаем. Если не совпадают - интерфейс пытается сконвертировать из типа поля в тип переменной (обычно успешно, но...) А если интерфейс не знает как сконвертировать тип поля в тип переменной - делается универсальная конвертация в текст.

То что у тебя интерфейс выдает текст - значит что ты пытаешься читать поле в неподходящий тип переменной.

https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/datatypeenum?view=sql-server-ver15
...
Рейтинг: 0 / 0
12.11.2021, 20:59
    #40111536
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
White OwlВозвращают куда и как?

Это очень интересный вопрос: куда возвращает значение метод класса и как этот
метод класса может догадаться, что слева от знака присваивания стоит переменная
"неправильного" типа...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.11.2021, 01:30
    #40111624
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
Dimitry Sibiryakov

White OwlВозвращают куда и как?

Это очень интересный вопрос: куда возвращает значение метод класса и как этот
метод класса может догадаться, что слева от знака присваивания стоит переменная
"неправильного" типа...
О привязке переменных к резалтсету слышал? Вот о ней и речь шла.
Хотя да, если конвертация вообще не возможна, то bind() упадет с ошибкой.


А вообще использовать ADO в С++ это геморрой, проблемы и вообще глупость. ADO придуман для VB и там он прекрасен.
А в С++ надо использовать ODBC, а если хочется классов, то взять один из сотен врапперов (лично мне нравится nanodbc).
...
Рейтинг: 0 / 0
16.11.2021, 22:30
    #40112411
istrebitel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ ADO к MSSQL и rs->Fields->GetItem()->Type / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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