Вы находитесь на странице: 1из 9

19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .

NET - OpenClassrooms

 
Accueil > Cours > Apprenez à programmer en VB .NET > La communication VB .NET - BDD

Apprenez à programmer en VB .NET

20 heures  Facile

Mis à jour le 20/12/2017

 

La communication VB .NET - BDD

 Connectez-vous ou inscrivez-vous gratuitement pour béné cier de toutes les fonctionnalités de ce cours !

Maintenant que nous avons toutes les clés en main pour pouvoir créer et remplir notre base de
données, je pense que vous avez envie de vous amuser un peu avec ? Ça tombe bien, c'est dans ce
chapitre que nous allons commencer à interfacer notre code VB.NET et notre base de données
fraîchement créée.

Pour cette tâche, nous allons étudier et utiliser un concept spécialement conçu pour ça : ADO.NET.

ADO.NET

ADO.NET (ActiveX Database Objects.NET) est une couche d'accès aux bases de données, c'est un
peu le SQL Server Manager de Visual Basic. ADO.NET fournit des modules pour accéder à des BDD
de différents types (Access, SQL Server, Oracle, etc.).

Pour le connecter à SQL Server, il faut SQL Server Managed Provider. Il faut donc importer le
namespace System.Data.SqlClient pour pouvoir l'utiliser.

Le fonctionnement d'ADO.NET
Créons un projet console pour apprendre le fonctionnement d'ADO.NET.
On effectue donc un Imports :

vbnet
En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
1 Imports
vous System.Data.SqlClient
proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

On va différencier trois types d'accès à la BDD :


ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 1/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

Les accès en lecture unitaire.


Ces accès seront effectués grace à un objet de type SqlCommand . Cet objet va exécuter une

requête sur la BDD (un SELECT par exemple). Puis nous allons nous servir de SqlDataReader ,
un objet qui va lire la réponse de la BDD à notre précédente requête. Cette combinaison
d'objets va nous permettre de lire une petite quantité de données. Cette solution est souvent
utilisée pour lire une entrée ou même une seule donnée.
Les accès en lecture de masse.
Ils seront effectués de la même manière que précédemment, seulement la lecture changera.
Nous allons utiliser cette fois-ci un SqlDataAdapter permettant d'adapter les données lues

pour un objet de type DataSet (comparable à un tableau). Cette méthode sera utile pour
récupérer de multiples informations (toute une table par exemple).
Les accès en écriture.
On va uniquement utiliser un objet de type SqlCommand pour exécuter une requête
d'insertion de données ou de modi cation par exemple.

Dans tous les cas, on doit se connecter à la BDD en utilisant un objet de type SqlConnection .

Voici à la gure suivante un schéma pour résumer les trois cas de gure qui se présentent à nous.

En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

ACCEPTER
Trois cas de gure se présentent à nous
https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 2/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

Connexion à la BDD


Pour ce faire, nous devons générer une chaîne de caractères contenant les informations nécessaires
pour se connecter à notre base de données, puis l'utiliser dans un objet de type SqlConnection .

Voici la chaîne de connexion pour notre base de données :


"Data Source=localhost;Initial Catalog=SDZ;User Id=sa;Password=*******;" .
À modi er si votre base ne s'appelle pas pareil (ici « SDZ ») ; il faut également entrer votre mot de
passe.

Vous pouvez trouver les chaînes de connexion vers d'autres types de BDD sur le site
http://www.connectionstrings.com/.

Création de l'objet de connexion : son constructeur prend en paramètre cette chaîne de connexion,
sinon il faut l'assigner manuellement avec un .ConnexionString :
vbnet

1 Dim Connexion As New SqlConnection("Data Source=localhost;Initial Catalog=SDZ;User


Id=sa;Password=*******;")

Cet objet est donc de type SqlConnection .

Il faut ouvrir la connexion avec la méthode Open() .

vbnet

1 Connexion.Open()

Il est préférable de mettre l'ouverture de connexion dans un Try… Catch (voir l'annexe de la
gestion des erreurs). Ainsi, si le serveur n'est pas accessible pour une raison X ou Y, le programme ne
plante pas et on peut gérer l'erreur :
vbnet

1 Try
2 Connexion.Open()
3 Catch ex As Exception
4 Console.WriteLine(ex.Message)
5 End Try

Attention, il faut toujours fermer sa connexion à la n du programme avec un Close() :


vbnet

1 Connexion.Close()

En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
… à mettre dans un finally par exemple.
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

Voilà, vous êtes connectés à votre base de données.


ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 3/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

Insertion ou modi cation


Comme vous l'avez vu, dans tous les cas il faut effectuer une requête grâce à l'objet SqlCommand .

Nous allons donc voir comment générer une requête et l’exécuter. Pour commencer, je souhaiterais
ajouter à ma BDD une ligne contenant un nouveau titre.

Je veux ajouter « Hotel California » des Eagles.

La requête SQL est


Insert into Musiques(Titre, Artiste) values ('Hotel California', 'Eagles') .

Je crée cette requête et mon objet SqlCommand :


vbnet

1 Dim Requete As String = "Insert into Musiques(Titre, Artiste) values ('Hotel California', 'Eagles')"
2 Dim Commande As New SqlCommand(Requete, Connexion)

Puis l'éxécution de la requête s'effectue simplement en faisant appel à la méthode


ExecuteNonQuery() .

Cette méthode retourne le nombre de lignes affectées par la modi cation. Dans le cas d'une
insertion, ce sera souvent 1. Mais certaines modi cations de masses (comme des update ) pourront
en modi er un grand nombre.

On execute donc la requête (avec un Try… Catch ).


vbnet

1 Try
2 Commande.ExecuteNonQuery()
3 Catch ex As Exception
4 Console.WriteLine(ex.Message)
5 End Try

Et voilà une nouvelle ligne d'insérée en BDD.

Supposons que je veuille attribuer « Album inconnu » à chaque entrée qui n'a pas son album de
renseigné, le programme serait :
vbnet

1 Imports System.Data.SqlClient
2
3 Module Module1
4
5 Sub Main()
6
7 Dim Connexion As New SqlConnection("Data Source=localhost;Initial Catalog=SDZ;User
En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
Id=sa;Password=********;")
vous
8 proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.
9 Try
10 Connexion.Open()
11 ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 4/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

12 Dim Requete As String = "UPDATE Musiques SET Album='Album inconnu' WHERE Album is null"
13 Dim Commande As New SqlCommand(Requete, Connexion)
14 Try
15 Console.WriteLine("Il y a eu " & Commande.ExecuteNonQuery() & " lignes mises à
jour")
16 Catch ex As Exception
17 Console.WriteLine(ex.Message)
18 End Try
19
20 Commande.Dispose()
21 Connexion.Close()
22
23 Catch ex As Exception
24 Console.WriteLine(ex.Message)
25 End Try
26
27 End Sub
28
29 End Module

Avec comme résultat console :


console

Il y a eu 3 lignes mises à jour

Il faut penser à libérer la mémoire de votre commande avec : Commande.Dispose() . Et


surtout fermer la connexion avec Connexion.Close() .

Voici le résultat en BDD à la gure suivante.

Le résultat en BDD

Lecture de données

Maintenant que vous savez exécuter une requête d'ajout ou de modi cation, on va s'attaquer aux
requêtes de lecture. Je souhaiterais connaître l'artiste qui a chanté « Jeune Et Con ».

La requête SQL est SELECT Artiste from Musiques Where Titre = 'Jeune Et Con' .

Encrée
Je poursuivant votre navigation
cette requête sur le site,
et mon objet vous acceptez
SqlCommand : l’utilisation de cookies par OpenClassrooms pour
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.
vbnet

1 Dim Requete As String = "SELECT Artiste from Musiques Where Titre = 'Jeune Et Con'"
2 Dim Commande As New SqlCommand(Requete, Connexion) ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 5/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

Il faut toujours passer l'objet de type SqlConnection lors de la création d'un objet
SqlCommand .

Vous voici avec votre commande, prête à être exécutée sur votre base.

Cependant, la manière va différer entre le SqlDataReader et le DataSet . Voyons cela.

Lecture avec SqlDataReader

L'objet de type SqlDataReader va récupérer les données d'une commande SELECT et les
emmagasiner. Il va falloir ensuite les lire une par une (donc cet objet est utile lorsqu'on a peu de
valeurs ou même une seule).
Pour lui dire de lire la valeur, nous allons utiliser Read() .

Read() renvoie un booléen spéci ant s'il y a ou non une valeur à lire.

Puis il faut y accéder en spéci ant le champ que l'on veut lire.

La gure suivante est un schéma pour résumer.

Schéma de fonctionnement du SqlDataReader

Utilisons ces informations pour continuer notre code et connaître notre artiste mystère.

On commence par exécuter la commande sur le reader :


vbnet
En
1 poursuivant votre
Dim MonReader As navigation sur le= site,
SqlDataReader vous acceptez l’utilisation de cookies par OpenClassrooms pour
Commande.ExecuteReader()
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

Puis on teste s'il y a une valeur et on l'af che :


ACCEPTER
vbnet
https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 6/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

1 If MonReader.Read() Then
2 Console.WriteLine(MonReader("Artiste").ToString)
3 Else
4 Console.WriteLine("Aucun artiste trouvé")
5 End If

Et la console nous af che èrement :


console

Saez

La gure suivante est un schéma qui représente ce qu'il s'est passé.

Schéma explicatif de notre exécution

Il y aurait eu de multiples possibilités, un While MonReader.read() aurait été utilisable.

Lecture avec DataSet

Nous allons désormais apprendre à stocker les données récupérées dans un DataSet .

Pour résumer, le DataSet est un objet qui va stocker une image de la base de données, que l'on va
pouvoir traiter ultérieurement.
Le chapitre suivant vous apprendra tout ce qu'il y a à savoir sur les DataSet .

Pour le moment, voyons comment récupérer les données.

Il va falloir passer par un adaptateur, cet objet va remplir le DataSet avec la commande que l'on a
exécutée.

Je crée donc une requête pour récupérer toute la table Musiques . Je l'applique à un SqlCommand ,
jeEn poursuivant
l'exécute avecvotre
mon navigation sur le site,
SqlAdapter et jevous
créeacceptez l’utilisation
mon DataSet . de cookies par OpenClassrooms pour
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.
vbnet

1 Dim Requete As String = "SELECT * from Musiques"


2 Dim Commande As New SqlCommand(Requete, Connexion)
ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 7/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

3 Dim Adaptateur As New SqlDataAdapter(Commande)


4 Dim MonDataSet As New DataSet

Maintenant la ligne magique qui va remplir notre DataSet avec le résultat de la commande :
vbnet

1 Adaptateur.Fill(MonDataSet, "Musiques")

Ici, « Musiques » est le nom de la table de mon DataSet dans laquelle je vais stocker les données
résultantes de la requête.

Vous voici avec un DataSet rempli par votre table Musiques . Rendez-vous au prochain chapitre
pour apprendre comment utiliser notre DataSet et traiter ces données !

ADO.NET permet l'accès rapide aux données, son utilisation peut cependant devenir
laborieuse sur de grandes tables.

On se connecte à la BDD en dé nissant une SqlConnection et une chaîne de connexion.

On exécute des requêtes SQL avec ExecuteNonQuery .

CRÉATION ET REMPLISSAGE DE LA
 LE DATASET À LA LOUPE 
BDD

Le professeur
Thomas Martinet

Découvrez aussi ce cours en...

 
Livre PDF

En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
OpenClassrooms
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

L'entreprise
ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 8/9
19/02/2019 La communication VB .NET - BDD - Apprenez à programmer en VB .NET - OpenClassrooms

Alternance

Forum

Blog

Nous rejoindre

Professionnels
Entreprises

En plus
Devenez mentor

Aide et FAQ

Conditions Générales d'Utilisation

Politique de Protection des Données Personnelles

Nous contacter

 Français
 

    

En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour
vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.

ACCEPTER

https://openclassrooms.com/fr/courses/993975-apprenez-a-programmer-en-vb-net/992982-la-communication-vb-net-bdd 9/9

Вам также может понравиться