Share via


Procédure : extraire des colonnes avec IRow::GetColumns (OLE DB)

L'interface IRow autorise un accès direct aux colonnes d'une ligne unique dans le jeu de résultats. IRow est donc une méthode efficace pour extraire des colonnes d'un jeu de résultats avec une seule ligne.

Un exemple de code démontrant comment extraire une ligne unique à l'aide de IRow est disponible. Dans cet exemple, une colonne est extraite à la fois de la ligne. L'exemple montre :

  • comment extraire un groupe de colonnes (de manière consécutive) ;

  • comment accéder deux fois à une colonne avec extraction de la largeur réelle de la colonne la première fois, puis accès aux données concernées par la suite. Dans la structure DBCOLUMNACCESS, si pData a la valeur NULL et cbMaxLen est définie sur 0, l'appel à IRow->GetColumns() retourne uniquement la longueur de colonne réelle. Dans ce cas, vous pouvez rappeler IRow->GetColumns() sur la même colonne pour extraire les données effectives.

L'exemple de code complet est disponible dans le fichier FetchColumns.cpp. Vous pouvez télécharger une archive contenant l'exemple à partir de la page des téléchargements SQL Server sur MSDN.

Cet exemple a été développé à l'aide de Microsoft Visual C++ 2005.

Le code suivant crée l'exemple de table utilisé par 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
Remarque relative à la sécuritéRemarque relative à la sécurité

Si possible, utilisez l'authentification Windows. Si l'authentification Windows n'est pas disponible, invitez les utilisateurs à entrer leurs informations d'identification au moment de l'exécution. Évitez de stocker ces informations dans un fichier. Si vous devez rendre les informations d'identification persistantes, chiffrez-les avec l'API de chiffrement Win32.

Pour extraire des colonnes avec IRow::GetColumns

  1. Établissez une connexion à la source de données.

  2. Exécutez la commande (dans l'exemple suivant, ICommandExecute::Execute() est appelée avec IID_IRow).

  3. Exécutez IRow::GetColumns() pour extraire une ou plusieurs colonnes dans la ligne obtenue. Si vous souhaitez rechercher la taille de colonne réelle avant d'extraire des données, définissez pData dans DBCOLUMNACCESS sur NULL. L'appel à IRow::GetColumns() retourne uniquement la largeur de la colonne. Un autre appel à IRow::GetColumns() permet d'extraire les données.

  4. Exécutez IRow::GetColumns() jusqu'à ce que vous accédiez à toutes les colonnes dont vous avez besoin. Vous devez accéder aux colonnes de manière consécutive.

Voir aussi

Autres ressources