![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
7 - О свойствах (DBPROP) и инициализации / OLE DB / Visual C++ |
![]() |
Шаг 7 - О свойствах (DBPROP) и инициализацииВ прошлом шаге мы говорили, что перед инициализацией надо устанавливать свойства соединения. Основой для устaновки свойств является структураDBPROP. Она вот такая: typedef struct tagDBPROP { DBPROPID dwPropertyID; // Идентификатор свойств DBPROPOPTIONS dwOptions; // Опции DBPROPSTATUS dwStatus; // статус результата. Например если провайдер не поддерживает // это свойство, то вернется DBPROPSTATUS_NOTSUPPORTED DBID colid; // Необязательное ID для колонки. Если ко всем колонкам, то надо //устанавливать в DB_NULLID VARIANT vValue; // Значение свойства. } DBPROP; Так вот, чтобы произвести инициализацию соединения с OLE провайдером нам нужен массив свойств, в котором определены параметры, например такие, как источник строк, пароль доступа и так далее. Этот массив и передается для инициализации. Объявить его можно так: DBPROP InitProperties[nProps]; Только поместить этот массив нужно в специальную структуру набора свойств - DBPROPSET: typedef struct tagDBPROPSET { DBPROP * rgProperties; // Указатель на массив структур ULONG cProperties; // Число свойств в наборе GUID guidPropertySet; // GUID для идентификации } DBPROPSET; Объявить можно так: DBPROPSET rgInitPropSet; Но, в принципе, все просто - для инициализации нужен набор свойств. Только одно свойство в одной специальной структуре. Эти структуры собираются в массив, который и передается для инициализации. А передать можно так. rgInitPropSet.guidPropertySet = DBPROPSET_DBINIT; rgInitPropSet.cProperties = nProps; rgInitPropSet.rgProperties = InitProperties; После заполнения массива можно попросить интерфейс IDBInitialize для установки свойств. pIDBInitialize->QueryInterface(IID_IDBProperties, (void**) &pIDBProperties); И получив его установить свойства соединения. hr = pIDBProperties->SetProperties(1, &rgInitPropSet); | | Автор Каев Артем. |
![]() |
![]() |
![]() |
|