powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ ADO к MSSQL и rs->Fields->GetItem()->Type
7 сообщений из 7, страница 1 из 1
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
    #40111442
Badhabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Не уверен, что правильно выбрал раздел, но если что перенесут...
Вопрос такой. Из проги на С через 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
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
    #40111467
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Badhabit,
Тип данных проектируется еще на стадии составления запроса.
Или школьная задачка?
В самой бд какой тип поля? В запросе не меняешь тип?
...
Рейтинг: 0 / 0
C++ ADO к MSSQL и rs->Fields->GetItem()->Type
    #40111488
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadhabitИз проги на С через ADO подключаюсь к БД MSSQL сервера

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

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

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

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

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

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

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

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


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


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