Comment faire pour remplir un objet DataSet à partir d'une base de données à l'aide de Visual .NET de C++ ou Visual C++ 2005

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 818779
Pour une version de Microsoft Visual Basic .NET de cet article, voir 301216.
Pour une version de Visual C# .NET de cet article, voir 314145.
Cet article se réfère à l'espace de noms bibliothèque de classes Microsoft .NET Framework suivant :

System.Data.SqlClient

DE CETTE TÂCHE

Résumé
Cet article étape par étape explique comment remplir un DataSet objet avec les résultats d'une ou plusieurs requêtes de base de données puis comment accéder aux données une fois que la requête est chargée dans l'objet DataSet. Les objets DataSet sont des objets en mémoire qui peuvent contenir des tables, vues et les relations qui font une partie de clé d'accès aux données dans le Microsoft .NET Framework.

back to the top
Plus d'informations

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server ou Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 ou Microsoft Data Engine avec l'exemple de base de données Pubs installé
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Terminologie de base de données
  • Microsoft SQL Server
back to the top

Alimenter un DataSet

En utilisant une variété d'objets dans l'espace de noms System.Data, vous pouvez vous connecter à un serveur de base de données, exécuter une requête et puis ont les résultats placés dans un objet DataSet. Le DataSet est un objet déconnecté. Par conséquent, une fois que les données sont chargées, la connexion à la base de données est plus utilisée jusqu'à ce que vous souhaitez charger des données plus ou mettre à jour le serveur avec les modifications apportées à votre copie en mémoire des informations.

Pour charger des données à partir d'une base de données à un DataSet, procédez comme suit :
  1. Démarrez Visual Studio .NET ou Visual Studio 2005.
  2. Créer une nouvelle application C++ géré dans Visual C++ .NET 2002, créez une nouvelle application console dans Visual C++ .NET 2003 ou créez une application console CLR dans Visual C++ 2005. Nom du projet MyApplication puis cliquez sur OK .
  3. Ajoutez le code suivant à la MyApplication.cpp fichier.

    Cela ajoute une référence à l'espace de noms System.Dll, l'espace de noms System.XML et l'espace de noms System.Data.
    #using <System.Dll>#using <System.Data.Dll>#using <System.Xml.Dll>
  4. Utilisez l'instruction USING sur l'espace de noms System, l'espace de noms System.Data l'espace de noms System.XML, l'espace de noms System.Collections et l'espace de noms System.Data.SqlClient afin que vous n'ayez pas de qualifier les déclarations de ces espaces de noms plus loin dans votre code. Vous devez utiliser ces instructions avant les autres déclarations.
    using namespace System;using namespace System::Data;using namespace System::Xml;using namespace System::Collections;using namespace System::Data::SqlClient;
  5. Déplacez les données à partir de la base de données vers le DataSet.

    Pour ce faire, vous devez établir une connexion de base de données. Cela nécessite un objet System.Data.SqlClient.SqlCommand et une chaîne de connexion. La chaîne de connexion dans le code connecte à un ordinateur qui exécute SQL Server qui se trouve sur l'ordinateur local (l'ordinateur sur lequel le code s'exécute). Vous devez modifier cette chaîne de connexion en fonction de votre environnement. Une fois l'objet SqlConnection créé, appeler la méthode Open de cet objet pour établir le lien de base de données. objConn
    SqlConnection* objConn;String* sConnectionString;sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";objConn = new SqlConnection(sConnectionString);objConn->Open();
  6. Créer un objet DataAdapter qui représente le lien entre la base de données et l'objet DataSet. Vous pouvez spécifier SQL Server ou un autre type de commande qui est utilisé pour récupérer des données dans le cadre de l'objet constructeur du DataAdapter. L'exemple suivant utilise une SQL instruction qui récupère des enregistrements de la table authors de la base de données Pubs .
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
  7. Déclarer et puis créer une instance d'un DataSet objet.

    Lorsque vous faites cela, vous devez fournir un nom pour le DataSet entier avant de pouvoir démarrer charger des données. Le nom peut contenir plusieurs tables distinctes.
    DataSet* dsPubs = new DataSet("Pubs");
  8. Exécutez FillSchema suivie de remplissage lors du traitement le chargement de données.

    La classe SqlDataAdapter fournit deux méthodes, la méthode Fill et la méthode FillSchema , qui sont essentielles à charger ces données. Ces deux méthodes de charger les informations à un DataSet. La méthode Fill charge les données elles-mêmes et la méthode FillSchema charge toutes les métadonnées disponibles relatives à une table particulière (telles que les noms de colonnes, clés primaires et contraintes).
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");daAuthors->Fill(dsPubs,"Authors");

    Si vous utilisez uniquement compléter , vous pouvez charger uniquement les métadonnées de base que vous devez posséder pour décrire les noms de colonnes et les types de données. La méthode Fill ne charge pas les informations de clé primaires. Pour modifier ce comportement par défaut, vous pouvez définir la propriété MissingSchemaAction de l'objet DataAdapter à MissingSchemaAction.AddWithKey . Il charge les métadonnées de clé primaire en plus sur les informations par défaut.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;daAuthors->Fill(dsPubs,"Authors");
    les données sont maintenant disponibles sous forme d'un objet DataTable individuel dans la collection tables du DataSet. Si vous spécifiez un nom de table dans les appels à FillSchema et à compléter , vous pouvez utiliser ce nom pour accéder à la table spécifique dont vous avez besoin.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
  9. Utilisez la fonction GetEnumerator pour accéder aux objets DataRow dans la collection Rows du DataTable. Utiliser lors de la boucle pour parcourir chaque ligne du tableau. Vous pouvez accéder colonnes par un nom ou en index de position. Zéro (0) est la première position de colonne. iEnum
    IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();         while(iEnum->MoveNext()) {        Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),                                       dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname"))); }
  10. Enregistrer votre projet. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter le projet.

back to the top

Terminer la liste de code

// This is the main project file for the VC++ application project // that is generated by using the Application wizard.#include "stdafx.h"#using <mscorlib.dll>#include <tchar.h>#using <System.Dll>#using <System.Data.Dll>#using <System.Xml.Dll>using namespace System;using namespace System::Data;using namespace System::Xml;using namespace System::Collections;using namespace System::Data::SqlClient;// This is the entry point for this application.int _tmain(void){    SqlConnection* objConn;    try    {                String* sConnectionString;        sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";        objConn = new SqlConnection(sConnectionString);        objConn->Open();                SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);        DataSet* dsPubs = new DataSet("Pubs");                daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");        daAuthors->Fill(dsPubs,"Authors");        DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];                IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();                while(iEnum->MoveNext())        {            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));                    }    }    catch(Exception *ex)    {        Console::WriteLine( ex->Message );    }    __finally    {        objConn->Close();    }        return 0;}
note Vous devez ajouter l'option compilateur du prise en charge de runtime commun langue (/ clr:oldSyntax) de Visual C++ 2005 pour compiler avec succès l'exemple de code précédent. Pour ajouter l'option langue exécution prise en charge compilateur courantes dans Visual C++ 2005, procédez comme suit :
  1. Cliquez sur le projet , puis cliquez sur <ProjectName>Propriétés.

    note <ProjectName>est un espace réservé pour le nom du projet.
  2. Développez les propriétés de configuration , puis cliquez sur général .
  3. Cliquez pour sélectionner Common Language Runtime Support, l'ancienne syntaxe (/ clr:oldSyntax) dans le paramètre projet prend en charge du Common Language Runtime dans le volet droit, cliquez sur Appliquer , puis cliquez sur OK .
Pour plus d'informations sur le common language runtime prennent en charge option de compilateur, reportez-vous au site de Web Microsoft suivant adresse :
/CLR (Common Language Runtime compilation)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
back to the top
Références
Pour plus d'informations, reportez-vous au adresse aux sites Web de Microsoft aux adresses suivantes :

http://msdn2.microsoft.com/en-us/library/ms810293.aspx

http://msdn2.microsoft.com/en-us/library/ms973217.aspx

http://msdn.microsoft.com/net

back to the top

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 818779 - Dernière mise à jour : 05/16/2007 03:29:22 - Révision : 3.2

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Initiation, Microsoft Visual C++ .NET 2002 Initiation, Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0

  • kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 KbMtfr
Commentaires