Compartir a través de


Cómo obtener columnas mediante IRow::GetColumns (OLE DB)

La interfaz IRow permite el acceso directo a las columnas de una fila única del conjunto de resultados. Así, IRow supone una manera eficaz de recuperar las columnas de un conjunto de resultados con una fila.

Existe un ejemplo de código disponible que muestra cómo capturar una fila única mediante IRow. En este ejemplo, se recupera una columna a la vez de la fila. El ejemplo muestra:

  • Cómo capturar un grupo de columnas (en secuencia).

  • Cómo tener acceso dos veces a una columna. La primera vez se obtiene el ancho de columna real y después se tiene acceso a los datos reales. En la estructura DBCOLUMNACCESS, si pData es NULL y cbMaxLen es 0, la llamada a IRow->GetColumns() devuelve sólo la longitud de columna real. En este caso, se puede llamar a IRow->GetColumns() de nuevo en la misma columna para recuperar los datos reales.

El ejemplo de código completo se encuentra en el archivo FetchColumns_B.cpp. Puede descargar un archivo que contiene el ejemplo en la página de descargas de SQL Server en MSDN.

Este ejemplo se desarrolló utilizando Microsoft Visual C++ 2005.

El código siguiente crea la tabla de ejemplo que utiliza FetchColumns_B.cpp.

USE AdventureWorks
GO

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'MyTable')
     DROP TABLE MyTable
GO

CREATE 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
)
GO
INSERT INTO MyTable
values
(
     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
Nota de seguridadNota de seguridad

Siempre que sea posible, utilice la autenticación de Windows. Si la autenticación de Windows no está disponible, solicite a los usuarios que escriban sus credenciales en tiempo de ejecución. No guarde las credenciales en un archivo. Si tiene que conservar las credenciales, debería cifrarlas con la API de criptografía de Win32.

Para capturar columnas mediante IRow::GetColumns

  1. Establezca una conexión con el origen de datos.

  2. Ejecute el comando (en el siguiente ejemplo, se llama a ICommandExecute::Execute() con IID_IRow).

  3. Ejecute IRow::GetColumns () para capturar una o más columnas de la fila resultante. Si desea buscar el tamaño de columna real antes de capturar los datos, establezca pData de DBCOLUMNACCESS en NULL. La llamada a IRow::GetColumns() sólo devuelve el ancho de columna. Otra llamada a IRow::GetColumns() capturará los datos.

  4. Ejecute IRow::GetColumns() hasta obtener acceso a todas las columnas que necesita. Se debe tener acceso a las columnas en secuencia.

Vea también

Otros recursos