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 руб./мес


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




 15 - Получаем информацию о колонках / OLE DB / Visual C++

Шаг 15 - Получаем информацию о колонках

После выполнения команды мы имеем некоторые данные в виде таблицы. Эту таблицу надо исследовать на предмет колонок и типов их.

//Группа переменных для получения данных о таблицы
IColumnsInfo* pIColumnsInfo;

Мы должны запросить интерфейс, который умеет получать информацию о колонках.

// получаем данные о таблице
hr=pIRowset->QueryInterface(IID_IColumnsInfo, (void**)&pIColumnsInfo);
if (FAILED(hr))
{	
pIRowset->Release(); 	
cout << "Error GetInfo Tables" << endl;
pIDBInitialize->Uninitialize();	
pIDBInitialize->Release(); 	
CoUninitialize();
return;
}

IColumnsInfo это интерфейс, который позволяет нам получить информацию относительно полученных данных. Его можно запросить у интерфейса IRowset который этими данными и владеет. У этого интерфейса есть метод, который возвращает колонку и называется он GetColumnInfo.

HRESULT GetColumnInfo 
( 
ULONG * pcColumns, 		//количество колонок 
DBCOLUMNINFO ** prgInfo,		//массив структур с информацией о колонках 
OLECHAR ** ppStringsBuffer		//массив структур для хранения строковых значений
);

Давайте попробуем? Надо добавить переменные.

//Группа переменных для получения данных о таблице
IColumnsInfo* pIColumnsInfo;
ULONG     nCols;DBCOLUMNINFO* pColumnsInfo = NULL;
OLECHAR*    pColumnStrings = NULL;

И получить информацию.

// получаем данные о таблице
hr=pIRowset->QueryInterface(IID_IColumnsInfo, (void**)&pIColumnsInfo);
if (FAILED(hr))
{
	pIRowset->Release(); 
	cout << "Error GetInfo Tables" << endl;
	pIDBInitialize->Uninitialize();
	pIDBInitialize->Release(); 
	CoUninitialize();
	return;
}


hr = pIColumnsInfo->GetColumnInfo(&nCols, &pColumnsInfo,&pColumnStrings);
if (FAILED(hr))
{
	cout << "Error GetColumnInfo" << endl;
	pIRowset->Release();
	pIColumnsInfo->Release(); 
	pIDBInitialize->Uninitialize();
	pIDBInitialize->Release(); 
	CoUninitialize();
	return;
}  

cout << nCols << endl;

pIRowset->Release();
pIColumnsInfo->Release();
pIDBInitialize->Uninitialize();
pIDBInitialize->Release(); 
// Деинициализация COM
CoUninitialize();
}

На экране Вы должны увидеть число 4 так как мы и запрашивали в SQL операторе.

LPCOLESTR wSQLString = OLESTR("SELECT CompanyName,City, Phone, Fax FROM Customers ORDER BY CompanyName, City");

15_1.gif (2761 b)

Но ведь мы могли и не задать, если бы использовали * вместо имен колонок.


Загрузить проект | | |
Автор Каев Артем.
[AD]