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

Traductions disponibles Traductions disponibles
Numéro d'article: 301216 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F301216
Agrandir tout | Réduire tout

Sommaire

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 System
    Imports System.Data
    Imports 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 String
    sConnectionString = "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.AddWithKey
    daAuthors.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 DataTable
    tblAuthors = 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 DataRow
    For Each drCurrent In tblAuthors.Rows
        Console.WriteLine("{0} {1}", _
            drCurrent("au_fname").ToString, _
            drCurrent("au_lname").ToString)
    Next
    Console.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 On

Imports System
Imports System.Data
Imports System.Data.SqlClient

Module 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 Sub

End 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

Numéro d'article: 301216 - Dernière mise à jour: mercredi 30 octobre 2013 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbhowtomaster KB301216
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com