Vous êtes sur la page 1sur 5

TP0

Programmation C/S : Mode Connect Consultation des donnes

ISTA NTIC SYBA

Objectif : Intgrer les accs aux donnes dans le client en mode connect.
Connexion une base de donnes MS Access.
Excution des requtes SQL.
Exploitation du rsultat dune requte SELECT.

Crer une base de donnes MS Access ClientsDb comportant la table client :


CLIENT (CIN, NOM, PRENOM, VILLE, TEL)

Question :
Soit raliser linterface ci-dessous permettant dafficher la liste de tous les clients dans un
contrle ListBox comme suit :

Solution :
Afin de raliser une telle application, suivez les tapes suivantes :

1/5

M. IDMANSOUR

TP0

Programmation C/S : Mode Connect Consultation des donnes

ISTA NTIC SYBA

1. Etape 1 : Dclaration du fournisseur daccs aux donnes :


Puisque les donnes sont stockes dans le serveur de base de donnes MS ACCESS, il
faut utiliser le fournisseur de donnes .Net Framework pour MS Access.
Pour ce faire il suffit dimporter lespace de nom System.Data.OleDb
using System.Data.OleDb;

2. Etape 2 : Dfinir lobjet connexion :


Lobjet connexion constitue la premire tape dans laccs aux donnes : elle permet de se
connecter au serveur de base de donnes.
1. Dclarer un objet connexion global :
OleDbConnection cn = new OleDbConnection();

'dclaration d'un objet connection avec un constructeur par dfaut


2. Dfinir la chaine de connexion en utilisant la proprit ConnectionString de
lobjet cn (au chargement du formulaire)

cn.ConnectionString="Provider=Microsoft.ACE.OleDb.12.0;Data Source=ClientsDb.accdb";

La principale proprit est connectionString . Cest une chane de caractres dfinissant


les principaux attributs ncessaires la connexion. Parmi ces informations figurent :
Le fournisseur daccs
Lemplacement de la base (le chemin vers la base de donnes)
Informations dauthentification
Chaque fournisseur de donnes a une ConnectionString spcifique.
Remarque :
La chaine de connexion peut tre le paramtre dun constructeur de la classe
OleDbConnection
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0;Data
Source=ClientsDb.accdb");

Il faut mettre la base de donnes dans le dossier bin\debug ou bien prciser le chemin de la
base de donnes dans le Data Source.
3. Ouverture et fermeture de la connexion:

Ouverture de la connexion
Cn.Open() ;

2/5

//Ouvrir la connexion

M. IDMANSOUR

TP0

Programmation C/S : Mode Connect Consultation des donnes

ISTA NTIC SYBA

Fermeture de la connexion

Cn.Close() ; //Ferme la connexion et libre les ressources

On peut faire appel la proprit State fin de savoir ltat de la connexion

Valeur

ConnectionState.Open
ConnectionState.Closed

Description
La connexion est ouverte
La connexion est ferme

Exemple dutilisation :
Le bouton Connecter qui permet de se connecter la base de donnes :
cn.Open();
MessageBox.Show("Connexion bien tablie");

Le bouton Dconnecter qui permet de se dconnecter de la base de donnes :


cn.Close();
MessageBox.Show("Connexion bien Ferme");

A faire :
Reprendre et amloirer le code prcdant pour tenir compte des cas suivants :

Connexion dj ouverte.
Connexion dj ferme.
La Connexion na pas pu stablir.

3. Etape 3 : Dfinir lobjet commande :


Une fois la connexion tablie avec la source de donnes, vous devez communiquer avec
cette dernire pour grer vos traitements. Trois types de traitements peuvent tre effectus :

Requte de slection pour extraire des informations (Rcuprer les donnes)


Requte dexcution (insrer, modifier et supprimer des donnes)
Procdures stockes (scripts stocks sur le serveur)

Lors de la cration dun objet commande, vous devez dfinir le type dopration quil
devra raliser ainsi que la connexion laquelle il est rattach.

3/5

M. IDMANSOUR

TP0

Programmation C/S : Mode Connect Consultation des donnes

ISTA NTIC SYBA

1. Dclarer un objet Commande :


OleDbCommand cmd = new OleDbCommand();

2. Associer une connexion ouverte la commande :


cmd.Connection = cn;

3. Dfinir le type de la commande :


cmd.CommandType = CommandType.Text; (le type par dfaut)

4. Associer une requte SQL la commande :


string req = "select * from client";
cmd.CommandText = req;

Exemple :
La premire partie pour Le bouton Afficher :
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from client";

Les principales proprits et mthodes de la classe Commande :


Proprit
Commandtext
CommandType
Connection
Transaction
CommandTimeOut
Parameters

Description
Texte SQL de la requte ou nom de la procdure stocke
Type de la commande (requte, table, procdure)
Connexion lie la commande
Objet transaction li (voir plus bas)
Nombre de seconde pour lexcution de la commande
Collection de paramtres envoyer avec la commande

Mthode
Cancel
ExecuteNonQuery
ExecuteReader

Description
Annule lexcution de la commande
Excute la requte daction et retourne le nombre de lignes affectes
Excute la requte de slection et retourne un objet de type
DataReader
ExecuteScalar
Excute la requte et retourne la valeur scalaire (1re ligne, 1re
colonne)
CreateParameter
Cre un objet paramtre
ExecuteXMLReader Excute la requte de slection et retourne un objet de type
XmlReader
De manire gnrale, il existe deux types de rsultat pour un objet command : soit il retourne
un seul rsultat (cest le cas lorsque vous utilisez les mthodes ExecuteScalar ou
ExecuteNonQuery), soit il retourne un ensemble denregistrements (mthode
ExecuteReader).

4/5

M. IDMANSOUR

TP0

Programmation C/S : Mode Connect Consultation des donnes

ISTA NTIC SYBA

4. Etape 4 : Dfinir lobjet DataReader :


Lobjet DataReader permet de rcuprer les enregistrements issus dune requte renvoys
par lobjet Command aprs son excution.
1. Dclarer un objet DataReader :
OleDbDataReader dr;

2. Excuter la commande et rcuprer son rsultat dans lobjet DataReader :


dr = cmd.ExecuteReader();

3. Lire le contenu de lobjet DataReader :


while (dr.Read())
{
listBox1.Items.Add(dr[0] +" "+ dr[1] +" "+ dr[2] +" "+ dr[3] +" "+ dr[4]);
}

4. Fermer lobjet DataReader :


dr.Close();

Voici les principales mthodes de lobjet DataReader :

Ce qui donne pour la suite du bouton Afficher


OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from client";
OleDbDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
listBox1.Items.Add(dr[0] +" "+ dr[1] +" "+ dr[2] +" "+ dr[3] +" "+ dr[4]);
}
dr.Close();

faire :
-

5/5

Amliorer le code prcdant pour tenir compte du cas ou la connexion nest pas
disponible.
Afficher la liste des clients dans une grille.

M. IDMANSOUR