Поделиться через


Как вывести Выборка столбцов при помощи метода IRow::GetColumns (OLE DB)

Интерфейс IRow обеспечивает прямой доступ к столбцам одной строки в результирующем наборе. Таким образом, IRow является эффективным способом получения столбцов из результирующего набора из одной строки.

Имеется образец кода, в котором показано получение одной строки с помощью IRow. В этом образце из строки за один раз извлекается один столбец. Образец показывает

  • Как получить группу столбцов (последовательно).

  • Как дважды получить доступ к столбцу. В первый раз узнается фактическая ширина столбца, а затем осуществляется доступ к данным. В структуре DBCOLUMNACCESS, если pData имеет значение NULL, а cbMaxLen = 0, вызов IRow->GetColumns() возвращает только фактическую длину столбца. В этом случае IRow->GetColumns() можно вызвать снова для того же столбца, чтобы получить данные.

Полный образец кода находится в файле FetchColumns_B.cpp. Архив, содержащий этот образец, можно загрузить на странице загрузок SQL Server MSDN.

Этот образец создан с помощью Microsoft Visual C++ 2005.

Приведенный ниже код создает образец таблицы, которая используется в файле FetchColumns_B.cpp.

USE AdventureWorksGOIF EXISTS (SELECT name FROM sysobjects WHERE name = 'MyTable')     DROP TABLE MyTableGOCREATE TABLE MyTable(     col1  int,     col2  varchar(50),     col3  char(50),     col4  datetime,     col5  float,     col6  money,     col7  sql_variant,     col8  binary(50),     col9  text,     col10 image)GOINSERT INTO MyTablevalues(     10,     'abcdefghijklmnopqrstuvwxyz',     'ABCDEFGHIJKLMNOPQRSTUVWXYZ',     '11/1/1999 11:52 AM',     3.14,     99.95,     CONVERT(nchar(50), N'AbCdEfGhIjKlMnOpQrStUvWxYz'),     0x123456789,     REPLICATE('AAAAABBBBB', 500),     REPLICATE(0x123456789, 500))GO
Примечание по безопасностиПримечание по безопасности

При возможности используйте проверку подлинности Windows. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения. Избегайте хранения учетных данных в файле. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32.

Получение столбцов с помощью IRow::GetColumns

  1. Установите соединение с источником данных.

  2. Выполните команду (в следующем примере это ICommandExecute::Execute() is called with IID_IRow).

  3. Вызовите функцию IRow::GetColumns() для извлечения одного или нескольких столбцов из полученной строки. Если перед получением данных нужно определить фактический размер столбца, присвойте pData в структуре DBCOLUMNACCESS значение NULL. Вызов IRow::GetColumns() возвращает только ширину столбца. Еще один вызов IRow::GetColumns() получает данные.

  4. Выполняйте функцию IRow::GetColumns(), пока не получите данные из всех нужных столбцов. Доступ к столбцами должен осуществляться последовательно.

См. также

Другие ресурсы