C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 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; 

7.gif (2207 b)

После заполнения массива можно попросить интерфейс IDBInitialize для установки свойств.

pIDBInitialize->QueryInterface(IID_IDBProperties, (void**) &pIDBProperties);

И получив его установить свойства соединения.

hr = pIDBProperties->SetProperties(1, &rgInitPropSet);

| |
Автор Каев Артем.
[AD]