Condividi tramite


Procedura: Recuperare colonne tramite IRow::GetColumns (OLE DB)

L'interfaccia IRow consente accesso diretto alle colonne di una singola riga nel set di risultati. Di conseguenza, tramite IRow è possibile recuperare in modo efficace colonne da un set di risultati con una singola riga.

È disponibile un esempio di codice in cui viene illustrato come recuperare una singola riga tramite IRow. In questo esempio viene recuperata una colonna per volta dalla riga. Nell'esempio vengono illustrate le operazioni seguenti:

  • Come recuperare un gruppo di colonne (in sequenza).

  • Come accedere due volte a una colonna. La prima volta viene ottenuta la larghezza di colonna effettiva, mentre la seconda volta viene eseguito l'accesso ai dati effettivi. Nella struttura DBCOLUMNACCESS, se pData è NULL e cbMaxLen è 0, la chiamata a IRow->GetColumns() restituisce solo la lunghezza di colonna effettiva. In questo caso, è possibile chiamare nuovamente IRow->GetColumns() nella stessa colonna per recuperare i dati effettivi.

L'esempio di codice completo è disponibile nel file FetchColumns_B.cpp. È possibile scaricare un archivio contenente l'esempio dalla pagina SQL Server Downloads del sito Web MSDN.

L'esempio è stato sviluppato utilizzando Microsoft Visual C++ 2005.

Nel codice seguente viene creata la tabella di esempio utilizzata da FetchColumns_B.cpp.

USE AdventureWorks2008R2;
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 sulla sicurezzaNota sulla sicurezza

Se possibile, utilizzare l'autenticazione di Windows. Se non è disponibile, agli utenti verrà richiesto di immettere le credenziali in fase di esecuzione. Evitare di archiviare le credenziali in un file. Se è necessario rendere persistenti le credenziali, è consigliabile crittografarle tramite CryptoAPI Win32.

Per recuperare colonne tramite IRow::GetColumns

  1. Stabilire una connessione all'origine dati.

  2. Eseguire il comando (nell'esempio seguente viene chiamato ICommandExecute::Execute() con IID_IRow).

  3. Eseguire IRow::GetColumns () per recuperare una o più colonne nella riga risultante. Se si desidera individuare le dimensioni di colonna effettive prima di recuperare i dati, impostare pData in DBCOLUMNACCESS su NULL. La chiamata a IRow::GetColumns () restituisce solo la larghezza di colonna. Un'altra chiamata a IRow::GetColumns () recupererà i dati.

  4. Eseguire IRow::GetColumns () fino a eseguire l'accesso a tutte le colonne necessarie. Alle colonne è necessario accedere in sequenza.

Vedere anche

Altre risorse