Ну, вот осталось совсем немножко, и мы увидим колонки. Для того, чтобы увидеть строки и колонки, нам опять нужны переменные.
// переменные для сток ULONG cRowsObtained; HROW rghRows[NUMROWS_CHUNK]; HROW* pRows = &rghRows[0]; char* pRowValues;
NUMROWS_CHUNK я объявил как.
#define NUMROWS_CHUNK 35
Нам нужно инициализировать указатель на строку.
pRowValues = new char[cbRow];
Основной цикл считывания данных.
while (TRUE) { pIRowset->GetNextRows(0,0,NUMROWS_CHUNK,&cRowsObtained,&pRows ); if (cRowsObtained == 0) break; for (ULONG iRow=0; iRow < cRowsObtained; iRow++) { pIRowset->GetData(rghRows[iRow], hAccessor, pRowValues); printf("\t%s\n",&pRowValues[pDBBindings[1].obValue]); } }
После использования строку нужно удалить из памяти.
delete [] pRowValues;
Результат работы программы будет вот такой. Колонка с записями.
Как видите кодировать данным образом работу с базой данных не очень приятно. А точнее вообще не приятно. Сложно и долго. Для облегчения работы с OLE DB и были созданы OLE DB Template то есть шаблоны. Они позволяют уменьшить количество кода для работы с OLE DB.