Comment faire pour se connecter à une base de données et exécuter une commande à l'aide de ADO.NET et de Visual Basic .NET

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

Sommaire

Résumé

Cet article décrit comment utiliser ActiveX Data Objects (ADO).NET pour se connecter à une base de données et exécuter une commande (telle que UPDATE, INSERT ou DELETE) à l'aide d'une application console Visual Basic .NET.

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 XP, Microsoft Windows Server 2003, Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server ou Microsoft Windows NT 4.0 Server
  • 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)

Comment exécuter une commande

Les commandes sont exécutées sur des bases de données pour réaliser des actions sur les magasins de données et pour inclure toute instruction susceptible d'être exécutée sur une base de données. Vous pouvez utiliser les classes OleDbCommand ou SqlCommand pour appliquer une commande à votre magasin de données principal, et la classe OleDbCommand peut être spécifique au magasin de données. Cet article présente les deux classes SqlClient (pour se connecter à un ordinateur SQL Server) et OleDb (pour toute base de données qui possède un pilote OLE DB ou ODBC disponible) au sein de ADO.NET. Toutefois, le code est généralement le même dans les deux cas.

ADO vous permet d'exécuter des commandes par le biais de l'objet Commande, Connexion, ou Jeu d'enregistrements. Dans ADO.NET, seuls les objets Commande (SqlCommand ou OleDbCommand) permettent d'exécuter des commandes.

Pour exécuter une commande, procédez comme suit :
  1. Procédez comme suit pour créer une nouvelle application console dans Visual Basic .NET :
    1. Démarrez Visual Studio .NET.
    2. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
    3. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets Visual Basic sous Types de projets, puis cliquez sur Application console sous Modèles.
  2. Assurez-vous que votre projet contient une référence à l'espace de noms System.Data, et ajoutez-en une le cas échéant.
  3. Utilisez l'instruction Imports sur les espaces de noms System et System.Data afin de ne pas avoir à rédiger de déclaration dans ces espaces de noms, ultérieurement dans votre code. Vous pouvez également inclure System.Data.SqlClient ou System.Data.OleDb, en fonction de ce que vous utilisez.
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    					
  4. Pour pouvoir créer une connexion à une base de données, il vous faut une chaîne de connexion. Les chaînes de connexion contiennent toutes les informations nécessaires à l'établissement d'une connexion à une base de données, y compris le nom du serveur, le nom de la base de données, l'ID et le mot de passe de l'utilisateur. Par exemple, la chaîne de connexion suivante pointe sur un ordinateur local SQL Server avec un mot de passe fort pour le compte <nom_utilisateur> :

    Pour les connexions OleDb :
    Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)
    						
    Pour les connexions SqlClient :
    User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)
    						
    REMARQUE : Si vous avez besoin d'une assistance supplémentaire pour déterminer la chaîne de connexion appropriée pour votre base de données, recherchez "ConnectionString" dans la bibliothèque MSDN (Microsoft Developer Network) sur le site Internet de Microsoft suivant :
    http://social.msdn.microsoft.com/search/fr-fr/default.aspx
  5. Visual Studio crée un Module et une procédure Main() vide. Déclarez une variable de type chaîne et enregistrez la chaîne de connexion appropriée pour votre base de données dans la procédure suivante :
    Sub Main()
        Dim sConnectionString As String _
            = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)"
    End Sub
    					
  6. Utilisez cette chaîne de connexion pour créer un nouvel objet OleDbConnection ou SqlConnection, et appelez sa méthode Open pour établir une connexion avec votre base de données :
    Dim objConn As New SqlConnection(sConnectionString)
       objConn.Open()
    					
  7. Créez un objet SqlCommand ou OleDbCommandet passez-lui la commande que vous voulez exécuter, ainsi que l'objet de connexion que vous avez créé à l'étape précédente. L'exemple de code suivant passe dans l'instruction INSERT :
    Dim sSQL As String = "INSERT INTO Employee " & _
      "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)" & _
      "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', " & _ 
               "10, 82,'0877','2001-01-01')"
    Dim objCmd As New SqlCommand(sSQL, objConn)
    					
  8. Une fois l'objet SqlCommand ou OleDbCommand créé, vous pouvez appeler la méthode ExecuteNonQuery pour exécuter la commande qu'elle représente. La méthode ExecuteNonQuery a été conçue pour les commandes qui ne renvoient aucun résultat (telles que les instructions DELETE, UPDATE et INSERT). Si l'instruction Execute s'exécute sans provoquer d'exception (reportez-vous au code suivant), c'est que la commande a été exécutée avec succès sur la base de données.
    objCmd.ExecuteNonQuery()
    					
  9. Enregistrez votre projet. Dans le menu Déboguer, cliquez sur Démarrer pour exécuter la commande sur la base de données.

Comment utiliser les paramètres

Lorsque vous appliquez des commandes à une base de données (telles que des instructions UPDATE, INSERT ou DELETE, ou des appels à des procédures stockées), ces commandes sont souvent paramétrées. Ainsi, elles sont créées une fois puis exécutées plusieurs fois avec des valeurs différentes spécifiées pour les paramètres. Examinez l'instruction DELETE correspondant à l'instruction INSERT utilisée ci-dessus :
Dim sSQL As String = "DELETE FROM Employee WHERE emp_id = @emp_id"
				
Le paramètre ("@emp_id") de cette instruction DELETE peut être remplacé par des valeurs différentes à chaque exécution de la commande.

Pour utiliser des paramètres avec votre commande, procédez comme suit :
  1. Créez votre objet OleDbConnection ou SqlConnection, comme vous l'avez fait dans la section "Comment exécuter une commande".
  2. Remplacez les valeurs par des variables de substitution (par exemple, " @emp_id " ou " @fname ") de sorte que le texte de la commande utilise des paramètres. Pour exemple, examinez l'instruction DELETE ci-dessus.
  3. Créez l'objet OleDbCommand ou SqlCommand, et passez-lui l'objet de connexion que vous avez créé à la première étape de cette procédure, ainsi que le texte de la commande contenant les variables de substitution des paramètres.
  4. Pour chaque paramètre, ajoutez un objet paramètre à la collection de paramètres de l'objet de commande. Pour chaque paramètre, vous devez spécifier un nom et un type de données.
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9)
    					
  5. Les procédures stockées peuvent posséder des paramètres qui renvoient des valeurs et des paramètres de sortie. Vous devez également spécifier une valeur pour chaque paramètre d'entrée avant d'exécuter la requête :
    objCmd.Parameters.Item("@emp_id").Value = "MSD12923F"
    					
  6. Exécutez la requête de la manière suivante :
    Try
        objCmd.ExecuteNonQuery()
        Console.WriteLine("Record Deleted")
    Catch e As Exception
        Console.WriteLine(e.ToString)
    End Try
    Console.WriteLine("Record Deleted")
    Console.Read()
    					

Liste de code complète

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

Module Module1
    Sub Main()
        AddRecord()
        RemoveRecord()
        Pause()
    End Sub

    Sub Pause()
        Console.WriteLine("Press Enter To Continue...")
        Console.ReadLine()
    End Sub

    Sub AddRecord()
        Dim sConnectionString As String _
            = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)"
        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()
        Dim sSQL As String = "INSERT INTO Employee " & _
          "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)" & _
          "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', " & _
                   "10, 82,'0877','2001-01-01')"

        Dim objCmd As New SqlCommand(sSQL, objConn)
        Try
            objCmd.ExecuteNonQuery()
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
        Console.WriteLine("Record Added")
    End Sub

    Sub RemoveRecord()
        Dim sConnectionString As String _
            = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)"
        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()
        Dim sSQL As String = "DELETE FROM Employee WHERE emp_id = @emp_id"
        Dim objCmd As New SqlCommand(sSQL, objConn)

        objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9)
        objCmd.Parameters.Item("@emp_id").Value = "MSD12923F"

        Try
            objCmd.ExecuteNonQuery()
            Console.WriteLine("Record Deleted")
        Catch e As Exception
            Console.WriteLine(e.ToString)
        End Try
        Console.WriteLine("Record Deleted")
        Console.ReadLine()
    End Sub

End Module
				

Références

Pour plus d'informations sur l'utilisation de ADO.NET, des commandes de base de données et des procédures stockées, visitez les sites Web de Microsoft suivants :
SQL Server 2000 Stored Procedures (en anglais)
http://msdn.microsoft.com/en-us/library/aa174792.aspx

"Revisiting the Use of ADO in .NET Applications ", Colonne MSDN Voices (en anglais)
http://msdn.microsoft.com/en-us/library/ms810295.aspx

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

MSDN Online .NET Developer Center (en anglais)
http://msdn.microsoft.com/fr-fr/vstudio/default.aspx
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: 301075 - 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 ADO.NET 1.1
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbhowtomaster KB301075
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