Select the product you need help with
ИНФОРМАЦИЯ: С помощью объектов данных ActiveX (ADO) через # import в VC ++Код статьи: 169496 - Список продуктов, к которым относится данная статья. На этой страницеАннотацияДиректива # import в Visual C++ предлагает новый мощный механизм для
Управление серверами OLE. При использовании с объектами данных ActiveX (ADO)
# import позволяет упростить получение данных. В данной статье описаны новые возможности
необходимо воспользоваться преимуществами # import с помощью ADO. Дополнительная информацияДо создания экземпляра любого классы созданные # importВажно инициализировать OLE перед созданием экземпляров классов для создания директивы # import. Например безопасный, следующий код объявляет # import смарт-указатель, инициализирует OLE и затем создает смарт указатель:Необработанное исключение в [программа] (KERNEL32.БИБЛИОТЕКА DLL): 0XE06D7363 Исключение C++ корпорации Майкрософт. Правильности реализации директивы # importОчень важно для правильного вызова ADO в программе, или с помощью ошибки компилятора. Следующий код демонстрирует правильный способ, с помощью директивы # import с Msado10.dll MSADO15.dll.Обработка ошибокС ADO может появиться сообщение об ошибке в значение HRESULT, возвращенное из метода ADO можно получить исключение, созданное # import созданных классов, а также может быть заполнен хотя бы одно условие коллекции ошибок ADO. Для получить в коллекции ошибок необходим объект соединения. Для получения дополнительных сведений обратитесь к следующей статье Microsoft Knowledge Base:169498
(http://support.microsoft.com/kb/169498/EN-US/
)
ИНФОРМАЦИЯ: Извлечение сведений об ошибках из ADO в VC ++ с помощью директивы # importADO и Dbdaoint.hПредпринимается попытка смешивать ADO (с помощью директивы # import) и MFC DAO или DAO SDK в одном файле реализации следующим образом:Создает следующие шесть ошибок: Ошибка C2011: «editmodeenum»: повторное определение типа «enum» Ошибка C2011: «locktypeenum»: повторное определение типа «enum» Ошибка C2011: «fieldattributeenum»: повторное определение типа «enum» Ошибка C2011: «datatypeenum»: повторное определение типа «enum» Ошибка C2011: «parameterdirectionenum»: повторное определение типа «enum» Ошибка C2011: «recordstatusenum»: повторное определение типа «enum»
# import генерирует два файла, Msado105.tlh и Msado15.tli из библиотеки типов, содержащихся в Msado15.dll. Структура TLH-файле может быть разбиваются следующим образом:
Прямые ссылки и определения типовПрямые ссылки и определения типов создаются посредством использования элемента структуры __declspec(UUID("...")) на идентификатор GUID для любого сдвоенный интерфейс, интерфейс, и Компонентный класс, определенный в библиотеки типов.
...
struct __declspec(uuid("00000274-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Connection;
...
struct __declspec(uuid("00000275-0000-0010-8000-00aa006d2ea4"))
/* interface */ ICADOConnection;
...
struct /* coclass */ Connection;
...
Объявления TypeDef смарт-указательДля интерфейсов и сдвоенные интерфейсы смарт-указатели объявляются, который значительно упрощает использование интерфейса:... _COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection)); ... _COM_SMARTPTR_TYPEDEF(ICADOConnection, __uuidof(ICADOConnection)); ... Элементы библиотеки типовЭто включает перечислимые типы, определенные в библиотеки типов, а также Реализация смарт-указатели и элементы библиотеки типов:Хотя это может вызвать GetConnectionString или PutConnectionString, действительно не требуется. Поскольку свойство ConnectionString будет ссылки на него следующим образом: Может быть фактической реализации GetConnectionString/PutConnectionString найти в файле Msado15.tli. Когда дело доходит до использования объекта подключения в коде, можно использовать экземпляр смарт-указатель для сдвоенный интерфейс, определенный в Msado15.TLH выглядит следующим образом: Где pubs — источник данных ODBC. # import и явно вызывать Release()Преимущества # import — она заботится о AddRef, QueryInterface, и для вас автоматически. Однако если вы решили начать вызов Release() явным образом, можно создать проблемы для себя.В пределах _com_ptr_t является переменной, m_pInterface член. # Import является очень Тонкие обертки, он не делает различий с m_pInterface после объекта Фактически освобождены и просто уменьшение счетчика без его ссылок Фактически уничтожение объекта. Путем явного вызова освобождения (--) без очень явно вызывающий AddRef() баланс it--# import попытается gladly освободить объект, который не существует, создание интересных побочные эффекты и аварийное завершение работы поведение. Лучшие советы, как не AddRef() его (или хотя бы не требуется), не освобождают его либо. Ссылки
182389
(http://support.microsoft.com/kb/182389/EN-US/
)
ФАЙЛА: Adovcbm.exe ADO 1.5 с помощью директивы # import и Getrows/закладки184968
(http://support.microsoft.com/kb/184968/EN-US/
)
ФАЙЛ: Adovcsp.exe демонстрирует использование хранимых процедур с помощью ADO186387
(http://support.microsoft.com/kb/186387/EN-US/
)
Пример: Ado2atl.exe возвращает интерфейсы ADO из COM181733
(http://support.microsoft.com/kb/181733/EN-US/
)
ФАЙЛА: Adovcbtd.exe # import с помощью UpdateBatch и CancelBatch166112
(http://support.microsoft.com/kb/166112/EN-US/
)
PRB: Конфликт с EOF при использовании директивы # import с ADO168354
(http://support.microsoft.com/kb/168354/EN-US/
)
ИНФОРМАЦИЯ: Базовый OLE и ошибок поставщика OLEDB предоставляются через ADOСвойстваКод статьи: 169496 - Последнее изменение :: 3 июня 2011 г. - Редакция: 4.0
Переведено с помощью машинного перевода ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода. Эта статья на английском языке:169496
(http://support.microsoft.com/kb/169496/en-us/
)
| Переводы статьи |




Перейти к началу страницы








