Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

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

Ancien nº de publication de cet article : F301216
Pour vous procurer une version Microsoft Visual C# .NET de cet article, reportez-vous à 314145.
Pour vous procurer une version Microsoft Visual Basic 6.0 de cet article, reportez-vous à 168336.

Cet article fait référence aux espaces de noms suivants de la Bibliothèque de classes Microsoft .NET Framework :
  • System
  • System.Data
  • System.Data.SqlClient

DANS CETTE TÂCHE

Résumé
Les objets DataSet, éléments clés de l'accès aux données dans le Microsoft .NET Framework, sont des objets résidant en mémoire qui peuvent contenir des tables, des affichages et des relations. Cet article montre comment remplir un objet DataSet avec les résultats d'une ou plusieurs requêtes de base de données et comment accéder à ces données après leur chargement dans l'objet DataSet.

Conditions requises

La liste suivante indique le matériel, les logiciels, l'infrastructure réseau et les Service Packs recommandés dont vous avez besoin :
  • Microsoft Windows 2000 Professionnel, Windows 2000 Server, Windows 2000 Advanced Server ou 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
Cet article suppose que vous maîtrisez les sujets suivants :
  • Terminologie relative aux bases de données
  • SQL (Structured Query Language)

En utilisant différents objets

à partir de l'espace de noms System.Data, vous pouvez vous connecter à un serveur de base de données, exécuter une requête et placer les résultats dans un objet DataSet. Le DataSet est un objet déconnecté. Par conséquent, une fois les données chargées, la connexion à la base de données n'est plus utilisée jusqu'à ce que vous souhaitiez charger davantage de données 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 dans un DataSet, procédez comme suit :
  1. Démarrez Visual Studio .NET.
  2. Créez un projet d'application console dans Microsoft Visual Basic .NET. Visual Studio .NET crée un module pour vous, avec une procédure Main vide.
  3. Assurez-vous que le projet référence les espaces de noms System et System.Data.
  4. Utilisez l'instruction Imports sur les espaces de noms System, System.Data et System.Data.SqlClient afin qu'il ne soit pas nécessaire de qualifier les déclarations de ces espaces de noms plus loin dans votre code. Vous devez utiliser ces instructions avant toute autre déclaration.
    Imports SystemImports System.DataImports System.Data.SqlClient					
  5. La première étape de transfert des données de la base de données vers le DataSet consiste à établir une connexion de base de données, ce qui requiert un objet System.Data.SqlClient.SqlCommand et une chaîne de connexion. La chaîne de connexion du code suivant connecte un serveur SQL Server situé sur l'ordinateur local (celui où le code s'exécute). Vous devez modifier cette chaîne de connexion en fonction de votre environnement. Une fois l'objet SqlConnection créé, appelez la méthode Open de cet objet afin d'établir la liaison de base de données.
    Dim sConnectionString As StringsConnectionString = "Password=<strong password>;User ID=<username>;" & _                    "Initial Catalog=pubs;" & _                    "Data Source=(local)"Dim objConn As New SqlConnection(sConnectionString)objConn.Open()					
  6. Créez un objet DataAdapter qui représente la liaison entre la base de données et votre objet DataSet. Vous pouvez spécifier une commande SQL ou un autre type de commande afin de récupérer des données dans le cadre de l'objet constructeur du DataAdapter. Cet exemple utilise une instruction SQL qui récupère des enregistrements de la table Authors dans la base de données Pubs.
    Dim daAuthors As _    New SqlDataAdapter("Select * From Authors", objConn)					
  7. Vous devez déclarer et créer une instance d'un objet DataSet et fournir à ce moment-là un nom pour le DataSet entier avant de pouvoir commencer à charger des données. Le nom peut contenir plusieurs tables distinctes.
    Dim dsPubs As New DataSet("Pubs")					
  8. La classe SqlDataAdapter fournit deux méthodes, Fill et FillSchema qui sont essentielles pour le chargement de ces données. Ces deux méthodes chargent des informations dans un DataSet. Fill charge les données elles-mêmes et FillSchema charge toutes les métadonnées disponibles relatives à une table particulière (telles que les noms de colonnes, les clés primaires et les contraintes). L'un des meilleurs moyens de gérer le chargement des données consiste à exécuter FillSchema suivi de Fill. Par exemple :
    daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")daAuthors.Fill(dsPubs, "Authors")						
    Si vous utilisez uniquement Fill, vous pouvez charger seulement les métadonnées de base nécessaires pour décrire les noms de colonnes et les types de données. La méthode Fill ne charge pas d'informations sur les clés primaires. Pour modifier ce comportement par défaut, vous pouvez définir la propriété MissingSchemaAction de l'objet DataAdapter à MissingSchemaAction.AddWithKey, ce qui charge les métadonnées des clés primaires avec les informations par défaut. Par exemple :
    daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKeydaAuthors.Fill(dsPubs, "Authors")					
  9. Les données sont maintenant disponibles en tant qu'objet DataTable individuel dans la collection Tables du DataSet. Si vous avez spécifié un nom de table dans les appels à FillSchema et Fill, vous pouvez utiliser ce nom pour accéder à la table spécifique souhaitée.
    Dim tblAuthors As DataTabletblAuthors = dsPubs.Tables("Authors")					
  10. Vous pouvez utiliser une boucle For Each pour parcourir en boucle tous les objets DataRow de la collection Rows d'un DataTable. Cela vous donne accès à chaque ligne de la table. Vous pouvez accéder aux colonnes par nom ou par index de position ('0' étant la première position de la colonne). Par exemple :
    Dim drCurrent As DataRowFor Each drCurrent In tblAuthors.Rows    Console.WriteLine("{0} {1}", _        drCurrent("au_fname").ToString, _        drCurrent("au_lname").ToString)NextConsole.ReadLine()					
  11. Enregistrez votre projet. Dans le menu Déboguer, cliquez sur Démarrer pour exécuter votre projet et vous assurer qu'il fonctionne.

Liste de code complète

Remarque : Vous devez modifier l'ID d'utilisateur <nom_utilisateur> et le mot de passe =<mot_de_passe_renforcé> afin d'utiliser les valeurs correctes avant d'exécuter ce code. Assurez-vous que l'ID d'utilisateur possède les autorisations correctes pour exécuter cette opération sur la base de données.
Option Explicit On Option Strict OnImports SystemImports System.DataImports System.Data.SqlClientModule Module1    Sub Main()        Dim sConnectionString As String        sConnectionString = "Password=<strong password>;User ID=<username>;" & _                            "Initial Catalog=pubs;" & _                            "Data Source=(local)"        Dim objConn As New SqlConnection(sConnectionString)        objConn.Open()        Dim daAuthors As _            New SqlDataAdapter("Select * From Authors", objConn)        Dim dsPubs As New DataSet("Pubs")        daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")        daAuthors.Fill(dsPubs, "Authors")        Dim tblAuthors As DataTable        tblAuthors = dsPubs.Tables("Authors")        Dim drCurrent As DataRow        For Each drCurrent In tblAuthors.Rows            Console.WriteLine("{0} {1}", _                drCurrent("au_fname").ToString, _                drCurrent("au_lname").ToString)        Next        Console.ReadLine()    End SubEnd Module				
Références
Pour plus d'informations sur ADO.NET, les objets DataSet et SQL, reportez-vous aux sites Web de Microsoft aux adresses suivantes :
« Diving into Data Access » (un article MSDN Voices de Dino Esposito) (en anglais uniquement)
http://msdn2.microsoft.com/en-us/library/ms810293.aspx

ADO.NET for the ADO Programmer (en anglais uniquement)
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Framework Developer Center (en anglais uniquement)
http://msdn.microsoft.com/fr-fr/netframework/default.aspx
Pour plus d'informations, reportez-vous aux rubriques suivantes dans l'aide de Visual Studio .NET ou consultez les sites Web de Microsoft aux adresses suivantes :
Procédure pas à pas : Creating a Distributed Application (en anglais uniquement)
http://msdn.microsoft.com/fr-fr/library/1as0t7ff.aspx

Walkthrough: Creating a Master-Detail Windows Form (en anglais uniquement)
http://msdn.microsoft.com/fr-fr/library/aa984462.aspx
Si vous avez installé les exemples de démarrage rapide, des exemples de projets sont disponibles dans le répertoire suivant :
C:\Program Files\Microsoft.NET\FrameworkSDK\Samples
Remarque Il s'agit d'un article de « PUBLICATION RAPIDE » rédigé directement au sein du service de support technique Microsoft. Les informations qui y sont contenues sont fournies en l'état, en réponse à des problèmes émergents. En raison du délai rapide de mise à disposition, les informations peuvent contenir des erreurs typographiques et, à tout moment et sans préavis, faire l'objet de révisions. Pour d'autres considérations, consultez les Conditions d'utilisation.
Propriétés

ID d'article : 301216 - Dernière mise à jour : 10/30/2013 21:50:00 - Révision : 1.0

  • Microsoft Visual Basic .NET 2002 Initiation
  • kbhowtomaster KB301216
Commentaires