COMMENT FAIRE : Se connecter à une base de données et exécuter une commande à l'aide d'ADO.NET et de Visual C# .NET

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

Sommaire

Résumé

Cet article explique comment utiliser les objets ActiveX Data Objects (ADO) .NET pour se connecter à une base de données et exécuter une commande.

Conditions requises

La liste qui suit indique le matériel, les logiciels, l'infrastructure de réseau et les Service Packs dont vous aurez besoin :

  • Microsoft Windows 2000 Professionnel, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
Cet article suppose que vous connaissez les sujets suivants :

  • Terminologie des bases de données
  • Langage SQL (Structured Query Language)

Procédure d'exécution d'une commande

Les commandes sont exécutées sur des bases de données pour effectuer des actions sur des magasins de données. Les commandes peuvent être n'importe quelle instruction pouvant être émise sur une base de données. Vous pouvez utiliser les classes OleDbCommand ou SqlCommand pour appliquer une commande à votre magasin de données principal ; la classe OleDbCommand peut être spécifique au magasin de données. Cet article présente les deux classes SqlClient (pour se connecter à SQL Server) et OleDb (pour toute base de données qui a un pilote OLE DB ou ODBC disponible) à partir de ADO.NET. Toutefois, le code est généralement le même pour les deux classes.

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

Pour exécuter une commande, procédez comme suit :
  1. Ouvrez Visual Studio .NET.
  2. Créez une nouvelle Application de console dans C#.
  3. Assurez-vous que votre projet contient une référence à l'espace de noms System.Data et ajoutez une référence si tel n'est pas le cas.
  4. L'instruction using avec les espaces de noms System et System.Data vous évitera la rédaction 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.
    using System;
    using System.Data;
    using System.Data.SqlClient;
  5. 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 serveur SQL Server local avec un mot de passe vide pour le compte 'sa' :

    Pour les connexions OleDb :
    Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=pubs;Data Source=(local)
    Pour les connexions SqlClient :
    User ID=sa;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 Library à l'adresse suivante :
    http://search.microsoft.com/us/dev/default.asp
  6. Visual Studio crée une classe statique 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 :
    class Class1
    {
    	static void Main(string[] args)
    	{
    		string sConnectionString = 
    "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
    	}
    }
  7. 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 :
    SqlConnection objConn = new SqlConnection(sConnectionString);
    objConn.Open();
  8. Créez un objet SqlCommand ou OleDbCommand, et 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 :
    string sSQL = "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')";
    SqlCommand objCmd = new SqlCommand(sSQL,objConn);
  9. 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 s'exécute sans provoquer d'exception, c'est que la commande a été exécutée avec succès sur la base de données.
    objCmd.ExecuteNonQuery();
  10. Enregistrez votre projet. Dans le menu Déboguer, cliquez sur Démarrer et exécutez votre commande sur la base de données.

Procédure d'utilisation des 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, ce qui leur permet d'être créées une fois puis utilisé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 :
string sSQL = "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 les premières procédures.
  2. Remplacez les valeurs par des variables de substitution (par exemple, " @emp_id " ou " @fname ") de sorte que le texte de la commande contienne 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 de 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["@emp_id"].Value = "MSD12923F";
  6. Exécutez la requête de la manière suivante :
    try
    {
    	objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e) 
    {
    	Console.WriteLine(e.Message);
    }
    Console.WriteLine("Enregistrement supprimé");

Liste de code complète

using System;
using System.Data;
using System.Data.SqlClient;
    /// <summary>
    /// Description récapitulative pour Class1.
    /// 
</summary>
    class Class1
    {
	static void Main(string[] args)
	{
		AddRecord();
		RemoveRecord();
		Pause();
	}
	static void Pause()
	{
		Console.WriteLine("Appuyez sur Entrée pour continuer...");
		Console.ReadLine();
	}
	static void AddRecord()
	{
		string sConnectionString = "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "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')";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		try
		{
			objCmd.ExecuteNonQuery();
			}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Enregistrement ajouté");
	}
	static void RemoveRecord()
	{
		string sConnectionString = "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
		objCmd.Parameters["@emp_id"].Value = "MSD12923F";
		try
		{
			objCmd.ExecuteNonQuery();
		}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Enregistrement supprimé");
	}
} 

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 Internet de Microsoft suivants :
SQL Server 2000 Stored Procedures (en anglais)
http://msdn.microsoft.com/library/psdk/sql/cm_8_des_07_31vb.htm

"Diving into Data Access", de la rubrique MSDN Voices
http://msdn.microsoft.com/voices/data.asp

ADO.NET for the ADO Programmer (en anglais)
http://msdn.microsoft.com/library/techart/adonetdev.htm (site en anglais)

Centre de développement .NET MSDN Online
http://msdn.microsoft.com/net

Propriétés

Numéro d'article: 306636 - Dernière mise à jour: lundi 13 octobre 2003 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbhowto kbhowtomaster kbnokeyword KB306636
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