Support de cours ADO.NET Base de données établir une connexion, tutoriel & guide de travaux pratiques ADO.NET en pdf.
Etablir une connexion
Les chaînes de connexions
Dans un mode connecté, il faut tout d’abord connecter l’application à la base de données. Nous utiliserons SQL Server 2005 pour la suite. Pour ouvrir cette connexion il faut d’abord déclarer une variable, ici ce sera « connexion » :
‘VB
Dim connexion As SqlConnection
//C#
SqlConnection connexion
La propriété ConnectionString permet d’indiquer les paramètres de connexion. Cela se fait sous forme de chaîne de caractères, tel que par exemple :
‘VB
connexionString = « Data Source=.\SQLServeur;Initial
Catalog=DotNetFrance;Integrated Security=true; »
//C#
connexionString = @ »Data Source=.\SQLServeur;Initial Catalog=DotNetFrance;Integrated Security=true; »;
Les pools de connexions
Afin de réduire le coût en ressource engendré par les connexions à des bases de données, l’ADO.NET propose une technique d’optimisation : le pool de connexion. Lorsque qu’une application ouvre une nouvelle connexion, un pool est créé. Les pools permettent de stocker toutes les requêtes récurrentes. Chaque fois qu’un utilisateur ouvre une connexion avec la même ConnectionString qu’un pool, le dispositif de connexion vérifie s’il y a une place disponible dans ce pool, si le MaxPoolSize n’est pas atteint, la connexion rentre dans l’ensemble. Un pool est effacé lorsqu’une erreur critique est levée.
Les pools sont paramétrables dans le ConnectionString et une connexion est retirée d’un pool lorsqu’elle est inactive depuis une certaine durée.
Mode connecté
Les commandes
Contrairement à une base de données, les requêtes SQL et les procédures stockées sont exécutées à partir de commandes. Les commandes contiennent toutes les informations nécessaires à leur exécution et effectuent des opérations telles que créer, modifier ou encore supprimer des données d’une base de données. Vous utilisez ainsi des commandes pour faire des exécutions de requêtes SQL qui renvoient les données nécessaires.
Remarque : les requêtes SQL et les procédures stockées sont deux choses différentes. En effet les procédures stockées sont des requêtes SQL déjà enregistrées dans la mémoire cache du serveur.
Utiliser des commandes
Une fois la connexion établie, la classe SqlCommand permet d’appeler la méthode CreateCommand qui permettra l’exécution de commandes SQL.
Il existe trois méthodes afin de créer une commande :
Vous pouvez directement utiliser un des constructeurs de la classe SqlCommand. Par contre cela nécessite l’utilisation de deux propriétés : CommandText et Connection. Voici un exemple utilisant cette méthode :
‘VB
Dim commande As SqlCommand = New SqlCommand() commande.Connection = connexion commande.CommandText = « SELECT * FROM Employe »
//C#
SqlCommand commande= new SqlCommand(); commande.Connection = connexion; commande.CommandText = « SELECT * FROM Employe »;
La deuxième méthode est l’utilisation d’un constructeur surchargé, voici par exemple :
‘VB
commande = New SqlCommand(« SELECT * FROM Employe », connexion)
//C#
commande = new SqlCommand(« SELECT * FROM Employe », connexion);
La dernière méthode est d’utiliser la méthode CreateCommand de l’objet de connexion comme dans l’exemple ci-dessous :
‘VB
Dim commande As SqlCommand = connexion.CreateCommand()
commande.CommandText = « SELECT * FROM Employe »
//C#
SqlCommand commande = connexion.CreateCommand(); commande.CommandText = « SELECT * FROM Employe »;
Le fonctionnement pour exécuter une procédure stockée est quasiment identique à l’exécution d’une requête SQL classique. Il faut que la propriété CommandText contienne le nom de la procédure, par contre la propriété CommandType doit prendre la valeur StoredProcedure au lieu de Text. L’avantage d’une procédure stockée est une amélioration de la performance car la procédure se trouve précompilée dans le cache du serveur. Voici un exemple qui permet d’afficher toutes les informations d’un utilisateur de la table Employe :
‘VB
Dim connexion As SqlConnection = New SqlConnection(« Data Source=.\SQLServeur;Initial Catalog=DotNetFrance;Integrated Security=True »)
Dim Command As SqlCommand = connexion.CreateCommand()
connexion.Open()
Dim id As String
Dim requete As String = « RecupInformation »
Command.CommandText = requete
Command.CommandType = CommandType.StoredProcedure
Console.WriteLine(« Quel est l’id de la personne sur laquelle vous voulez les informations ? »)
id = Console.ReadLine()
Dim paramIdToKnow As SqlParameter = New SqlParameter(« @IdToKnow », id)
Command.Parameters.Add(paramIdToKnow)
Dim lecture As IDataReader = Command.ExecuteReader()
While (lecture.Read())
Console.WriteLine(« Id : {0} Nom : {1} Prenom : {2} Role : {3} », lecture(« ID »), lecture.GetString(1), lecture.GetString(2), lecture.GetInt32(3))
End While
connexion.Close()
connexion.Dispose()
//C#
SqlConnection connexion = new SqlConnection(@ »Data Source=.\SQLServeur;Initial Catalog=DotNetFrance;Integrated Security=True »);
SqlCommand command = connexion.CreateCommand(); connexion.Open();
string id;
string requete = « RecupInformation »;
command.CommandText = requete;
command.CommandType = CommandType.StoredProcedure;
Console.WriteLine(« Quel est l’id de la personne sur laquelle vous voulez les informations ? »);
id = Console.ReadLine();
SqlParameter paramIdToKnow = new SqlParameter(« @IdToKnow », id); command.Parameters.Add(paramIdToKnow);
IDataReader lecture = command.ExecuteReader();
while (lecture.Read())
{
Console.WriteLine(« Id : {0} Nom : {1} Prenom : {2} Role : {3} », lecture[« ID »], lecture.GetString(1), lecture.GetString(2), lecture.GetInt32(3));
}
connexion.Close();
connexion.Dispose();
Afin d’exécuter une instruction SQL qui renvoie plusieurs valeurs, on peut utiliser la méthode ExecuteReader; elle va retourner l’objet Datareader qui va permettre la lecture des données. Si l’instruction SQL ne doit renvoyer qu’une valeur unique, on peut utiliser la méthode ExecuteScalar qui va à la fois s’occuper de l’exécution et retourner la valeur.
1 Introduction
2 Les bases de données
2.1 Les fournisseurs de données
2.2 Accéder à la base de données
2.3 Interface portable
2.4 Mode connecté / Mode déconnecté
3 Etablir une connexion
3.1 Les chaînes de connexions
3.2 Les pools de connexions
3.3 Déconnexion
4 Mode connecté
4.1 Les commandes
4.2 Utiliser des commandes
4.3 Les paramètres de commandes SQL
4.4 Les types de paramètres
4.5 Créer un paramètre
4.6 Les BLOBs
4.7 Le DataReader
4.8 Copier un grand nombre de données
4.9 Les transactions
4.9.1 Niveau d’isolations des transactions
4.9.2 Les transactions Distribuées
5 Mode déconnecté
5.1 Le DataSet
5.2 Configurer un DataSet
5.2.1 Créer un DataSet
5.2.2 Ajouter des DataTable
5.2.3 Le DataRelation
5.2.4 Fusionner deux DataSet
5.2.5 Copier un DataSet
5.3 Configurer une DataTable
5.3.1 Créer des colonnes contenant des expressions
5.3.2 L’incrémentation dans une DataTable
5.3.3 Les contraintes dans une DataTable
5.4 Le DataAdapter
5.4.1 Créer un DataAdapter
5.4.2 Créer des commandes pour un DataAdapter
5.4.3 Le MissingMappingAction
5.4.4 Le MissingSchemaAction
5.5 Gérer une DataTable
5.6 Le DataView
5.6.1 Créer un DataView
5.6.2 Gérer un DataView
5.7 Exemples
5.7.1 Remplissage automatique / Lecture de données
5.7.2 Remplissage manuel du DataSet
6 Conclusion