0% ont trouvé ce document utile (0 vote)
66 vues49 pages

Support Labo Info VB - Net IUC - 124439

Support de cours de Laboratoire informatique et programmation avancée en Bac 2 I.G.

Transféré par

KITAMBALA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
66 vues49 pages

Support Labo Info VB - Net IUC - 124439

Support de cours de Laboratoire informatique et programmation avancée en Bac 2 I.G.

Transféré par

KITAMBALA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 49

1

INSTITUT UNIVERSITAIRE DU CONGO


Département d’Informatique de Gestion
« IUC-Moba »

SUPPORT DE LABO
INFORMATIQUE
DESTINE AUX ETUDIANTS DE BAC 2 INFORMATIQUE

Par Ass. Théophile KITAMBALA


Analyste Concepteur

Année académique 2023-2024


1

Cours de Laboratoire Informatique


VB.Net (Visual Basic Dot Net)
Dispensé par Ir. KITAMBALA BALIBWA Théophile
Analyste Concepteur des Systèmes d’information

Volume horaire : 45 heures


Contacts : +243 974 950 964 / +243 822 305 940
Mail : [email protected]
2

Objectifs du cours

Ce cours a pour objectifs de permettre aux étudiants :


 De s'initier à la programmation objet ;
 Concevoir et faire aboutir un projet dans un langage orienté Objet notamment le
Visual Basic Dot Net (VB.NET).

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


3

Chapitre premier : les bases de VB.Net


0.1 Historique
Le BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. Le BASIC
a été conçu en 1963 par John George Kemeny et Thomas Eugene Kurtz au Dartmouth College
pour permettre aux étudiants qui ne travaillaient pas dans des filières scientifiques d'utiliser les
ordinateurs.
Les huit principes de conception du BASIC étaient :
 Être facile d'utilisation pour les débutants (Beginner) ;
 Être un langage généraliste (All-purpose) ;
 Autoriser l'ajout de fonctionnalités pour les experts ;
 Être interactif ;
 Fournir des messages d'erreur clairs et conviviaux ;
 Avoir un délai de réaction faible pour les petits programmes ;
 Ne pas nécessiter la compréhension du matériel de l'ordinateur ;
 Isoler l'utilisateur du système d'exploitation.
A ce jour, le VB a laissé place au VB .NET. Le suffixe .NET spécifie en fait qu'il nécessite le
framework.NET1 de Microsoft afin de pouvoir être exécuté.
Le Framework .NET est compatible avec le Visual Basic et d'autres langages tels que le C#, le
F#, le J#, etc.
0.2 Le framework .NET
La plate-forme .NET fournit un ensemble de fonctionnalités qui facilitent le développement de
tous types d'applications :
 Les applications Windows classiques ;
 Les applications web ;
 Les services Windows ;
 Les services web.
En Visual Basic, toutes ces applications sont réalisables grâce au framework .NET.
« .NET » se prononce « dotte nette » (en anglais).

1
Un framework est une sorte d'immense bibliothèque informatique contenant des outils qui vont faciliter la vie
du développeur.
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
4

0.3 Espace de travail

Après avoir lancé VB, l’écran qui s’affiche correspond à l’espace de travail comme illustré dans
la figure ci-après : C’est alors que vous pouvez créer vos fenêtres, entrer vos lignes de code,
etc.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


5

0.3.1 Boîte à outils

0.3.2 Fenêtre de solutions


De l'autre côté de notre écran, nous remarquons la fenêtre de solutions (voir figure suivante) :
elle récapitule l'arborescence de notre projet. Elle servira également à gérer les bases de
données, mais plus tard.
0.3.3 Fenêtre des propriétés
Autre partie essentielle : la fenêtre des propriétés permet, en mode conception, de modifier les
propriétés des objets.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


6

0.4 Notre premier programme


Créez un nouveau projet ( CTRL + N ) et cliquez sur Application console.

Voici ce qui devrait s'afficher chez vous : Module1 est le nom du


Module Module1 module, que vous pouvez
modifier
Sub Main()

Main() sont appelées


des méthodes, car
Console.Write("Bonjour G2 Info!") précedé de Sub

Console.Read()
End Sub Instruction
End Module d'affichage à
Instruction de l'écran
. pause console

0.5 LES VARIABLES


Comme son nom l'indique, une variable… varie. On peut y stocker pratiquement tout ce qu'on
veut : des nombres, des phrases, des tableaux, etc.
0.5.1 Les types
Les variables se déclinent sous différents types tels que décrits dans ce tableau.
Nom Explication
Boolean Ce type n'accepte que deux valeurs : vrai ou faux.
Type de variable spécifique au stockage de nombres entiers (existe sous trois
Integer déclinaisons ayant chacune une quantité de « place » différente des autres).
Double Stocke des nombres à virgule (réels)
String Conçu pour stocker des textes ou des mots. Peut aussi contenir des nombres.
Date Stocke une date et son heure sous la forme « 12/06/2009 11:10:20 ».

0.5.2 Déclaration variables et Affectations de valeurs


En VB, il faut déclarer une variable avant de l'utiliser. Autrement, l'ordinateur ne saura pas de
quel type est la variable et ne saura donc pas comment réagir.
Toute déclaration se fait à l’aide du mot clé Dim.
Dim NomdelaVariable As TypeVariable

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


7

Exemple
Module Module1
Sub Main()
Dim NbEnfant As Integer
NbEnfant = 5
Console.Write(Nbenfant) ' affiche 5
Console.Read()
End Sub
End Module
NB.:
 Le nom d'une variable ne peut contenir d'espaces ; privilégiez plutôt un « _ »
(underscore) ou une majuscule à chaque « nouveau mot », mais en liant le tout.
 Une variable peut contenir une valeur.
 Des guillements : « " " » délimitent une valeur d'une variable de type chaîne de
caractères.
 Le type String contient les chaînes de caractères, Integer les entiers, Double les nombres
à virgule, et Date les dates et heures.
0.6 OPÉRATIONS SUR LES VARIABLES
Les autres opérations possibles sont :
Opération Addition Soustraction Multiplication Division Division Puissance Modulo
souhaitée entière Reste de la division
Symbole + - * / \ ^ Mod
x = 14
y=3
x mod y = 2
x\y=4
x / y = 4.666666
x ^ y = 2 744
Module Module1
Sub Main()
Dim x As Integer
Dim x2 As Integer
Dim x3 As Integer
x = 8
x2 = 9
x3 = x * x2
Console.Write("9 x 8 = ")
Console.Write(x)
Console.Read()
End Sub
End Module

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


8

Il est aussi possible d’initialiser les variables lors de la déclaration :


Et le code précédent devient :
Module Module1
Sub Main()
Dim x As Integer = 8
Dim x2 As Integer = 9
Console.Write("9 x 8 = " & x * x2)
Console.Read()
End Sub
End Module
0.6.1 Les commentaires
Les commentaires vont nous servir à éclaircir le code. Ce sont des phrases ou des indications
que le programmeur laisse pour lui-même ou pour ceux qui travaillent avec lui sur le même
code.
Une ligne est considérée comme commentée si le caractère « ' » (autrement dit, une
simple quote) la précède ; une ligne peut aussi n'être commentée qu'à un certain niveau.
Exemples :
'Commentaire
x = 9 * 6 'Multiplie 9 et 6 et entre le résultat dans MaVariab
le
0.6.2 Lire une valeur en console
La lecture d'une valeur au clavier passe par l'instruction Console.Readline()
Sa syntaxe est:
<variable>=Console.ReadLine()
0.6.3 CONDITIONS ET BOUCLES
0.6.3.1 Le test « If », mot anglais traduisible par « si »
Le test If peut être reprsésenté par l’illustration suivante :
If <condition> Then If <condition> Then If <condition> Then
…….. …….. ……..
EndIf Else ElseIf
……… ………
EndIf EndIf

Exemple :
If x = 10 Then
Console.write(x^2)
ElseIf x = 5 Then
Console.write(x^2-5)
Else
Console.write(x^3-x^2-6)
End If
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
9

0.6.3.2 Les boucles


0.6.3.2.1 For….. Next
La structure For...Next est utile lorsqu'on doit répéter plusieurs fois la même instruction.
Sa synthaxe est la suivante :
For <compteur> =<ValeurDébut> To <ValeuFin> [Step <Pas
d’Incrementation>]
……..
Next
Exemple
Module Module1
Sub Main ()
For x As Integer = 1 To 5
For j As Integer = 2 To 6
‘Console.Write ("9 x 8 = ")
Console.Write ((x + j) & " ")
Next
Console.WriteLine ()
Next
Console.Read ()
End Sub
End Module
0.6.3.2.2 While
« While », mot anglais traduisible par « tant que ». Cette boucle va effectivement « tourner »
tant que la condition est vraie.
While MaVariable = 10
'Exécuté tant que MaVariable = 10
End While
0.6.3.2.3 Do While
À l'instar du While, le Do While (traduisible par « faire tant que ») passe au moins une fois dans
la boucle.
Do
'Instruction exécutée au moins une fois
Loop While MaVariable = 10
--------------------------------------------------------------
Do
'Instruction exécutée
Loop Until MaVariable = 10
--------------------------------------------------------------------
Do
'Instruction exécutée
Loop While MaVariable <> 10

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


10

Exemple
Module Module1
Sub Main()
Dim x As Integer
Console.WriteLine(" Faites votre choix? 1, 2, 3, 4")
x = Console.ReadLine()
Do While x > 4
Console.WriteLine(" quel est votre choix? 1, 2, 3, 4")
x = Console.ReadLine()
Loop
Console.Write("t'as saisi " & x)
Console.Read()
End Sub
End Module
0.7 LES TABLEAUX
Un tableau va servir à stocker plusieurs valeurs.

Tableau à une dimension Tableaux à plusieures dimensions

Peut se déclarer comme suit :


Dim X(4) as integer Peut se déclarer comme suit :
Dim Y(3,2) as integer

0.7.1 Activités sur le tableau


Instruction Effet produit Exemple
Redim Permet de Dim x() as integer
redimensionner un …………………………………….
tableau déclaré sans Redim x(15)
dimension auparavant Ou Redim Preserve monTableau(20)
Clear Permet de vider un Sub Main()
tableau. Trois Dim x(2, 2) As Integer
paramètres sont Dim i, j As Integer
nécessaires : Le nom For i = 0 To 2
du tableau à vider, le For j = 0 To 2
second spécifie à partir x(i, j) = i + 5 + j ^ 2
de quel index vider, et Next
le troisième indique le Next
nombre de cases à For i = 0 To 2
vider. For j = 0 To 2
Console.Write(x(i, j) & " ")
Next
Console.WriteLine ()
Next
Console.WriteLine ("Le tableau
effacé est")
Array.Clear(x, 2, 4)
For i = 0 To 2
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
11

For j = 0 To 2
Console.Write(x(i, j) & " ")
Next
Console.WriteLine()
Next
Console.Read()
End Sub

Copy Permet de copier un Array.Copy(monTableau1, monTableau2, 5)


tableau dans un autre. Array.Copy(Tableau1,
3 paramètres : le Tableau2,Tableau2.Length)
tableau source, la Copie l’entièreté du tableau
tableau
destination (celui dans
lequel nous allons
coller les éléments),
Le troisième
paramètre est le
nombre d’éléments à
copier (depuis
l'élément 0).
Exercice
Que produit ce programme ?
Sub Main()
Dim X(20) As Double
Dim temp, n, i As Integer
Dim EnOrdre As Boolean = False
For i = 0 To X.Length - 1
X(i) = Rnd(1) * 10 + 45
Next
n = X.Length
While Not EnOrdre
EnOrdre = True
For i = 0 To n - 2
If X(i) > X(i + 1) Then
temp = X(i)
X(i) = X(i + 1)
X(i + 1) = temp
EnOrdre = False
End If
Next
n = n - 1
End While
For i = 0 To X.Length - 1
Console.Write(" " & X(i))
Next
Console.Read()
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
12

End Sub
Utilisation de la boucle For Each
Cette boucle traduisible par « pour chaque » permet de parcourir tous les éléments d’un tableau
ou d’une même collection et de récupérer les valeurs.
Exemple 1
Dim x(9), z As integer
For Each z As Integer In x
If z < 10 Then
Console.WriteLine(z)
End If
Next
Exemple 2
Un For Each peut être utilisé pour parcourir chaque lettre d'un mot :
Dim x As String = "Bonjour à tous"
Dim i As Integer = 0
For Each z As String In x
If z = "a" Then
i = i + 1
End If
Next
Ce code compte le nombre d'occurrences de la lettre a dans un mot.
0.8 Les fonctions prédéfinies
0.8.1 Les fonctions Chaines de caractères
Le tableau suivant répertorie les fonctions fournies par Visual Basic pour rechercher et
manipuler des chaînes.
Méthode Description Exemples
LCase Retourne une chaîne ou
un caractère converti en
lettres minuscules.
Left Retourne une chaîne Dim x As String = "Salut les amis!"
contenant un nombre ' affiche "Salut".
spécifié de caractères en Dim y As String = Left(x, 5)
partant de la gauche d'une
chaîne.
Len Retourne un entier Dim TestString As String = "Hello World"
contenant le nombre de ' Returns 11.
caractères dans une Dim TestLen As Integer = Len(TestString)
chaîne.
Mid Retourne une chaîne X=Mid ("Emery K",3, 5)
contenant un nombre ' affiche "ery k"
spécifié de caractères
d'une chaîne.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


13

Right Retourne une chaîne X=Right ("Infor de base",4)


contenant un nombre ' affiche "base"
spécifié de caractères
depuis la partie droite
d'une chaîne.
RTrim Retourne une chaîne
contenant une copie d'une
chaîne spécifiée sans
espaces à droite.
ToUpper() et permet la conversion Sub Main()
ToLower() d’une chaine de Dim phrase As String =
miniscule en majuscule et "Algorithmique et Programmation"
vice versa: Console.WriteLine(" Mon texte
original est: " & phrase)
phrase = phrase.ToUpper()
Console.WriteLine(" Mon texte en
majuscule est: " & phrase)
Console.Read()
End Sub
Résultat d’exécution

UCase Retourne une chaîne ou


un caractère contenant la
chaîne spécifiée
convertie en majuscules.
Replace() permet de remplacer des Dim phrase As String = "je suis toujours
caractères ou groupes de apprenant en Informatique"
caractères au sein d'une Console.WriteLine(" Mon texte original
chaîne. est: " & phrase)
phrase = phrase.Replace("apprenant",
"étudiant")
Console.WriteLine(" Mon texte modifié
est: " & phrase)
Console.Read()

0.8.2 Les fonctions numériques


0.8.2.1 Les dates, le temps
Fonction/Instruction Effets
Date.Now renvoie la date et Console.WriteLine(" il est : " &
l'heure de l’ordinateur Date.Now)
au moment de Affichera :
l’exécution
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
14

ToShortDateString() Récupère la date en Console.WriteLine(Date.Now.ToShort


date sans heure DateString)
affichera

ToLongDateString() récupère la date avec Console.write


le jour et le mois Date.Now.ToLongDateString())
écrits en toutes lettres

Console.WriteLine(#12/4/2013#.ToLo
ngDateString())
affichera

0.8.2.2 Exemple
Le code suivant fait tourner une horloge à l’écran.
Sub Main()
While 1
Console.WriteLine(Date.Now.ToLongTimeString)
'Pause de 1 seconde
System.Threading.Thread.Sleep(1000)
Console.Clear()
End While
Console.Read()
End Sub

Méthode Description
Max Retourne le plus grand de deux
nombres.
Min Retourne le plus petit de deux
nombres.
Pow Retourne un nombre spécifié X=Math.Pow(value, power)
élevé à la puissance spécifiée.
Sqrt Retourne la racine carrée d'un ' Returns 2.
nombre spécifié. MySqr1 = Math.Sqrt(4)
' Returns 4.79583152331272.
MySqr2 As Double = Math.Sqrt(23)

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


15

Chapitre 2 : L'interface graphique


Jusqu'à maintenant nous avons travaillé sur la console : Console.ReadLine() pour l'entrée
et Console.WriteLine() pour la sortie.
Nous allons maintenant procéder à la programmation événementielle au moyen des interfaces
graphiques, Windows Forms.
Il faudra passer par nos outils pour écrire et interagir avec l'utilisateur.
Par exemple, Le Label, nous servira principalement à écrire du texte dans cette interface ;
la Textbox, à demander à l'utilisateur d'écrire du texte ; le Button, à déclencher un évènement.
Pour ce faire, on crée un projet Windows Forms pour pouvoir utiliser l'interface graphique
La plateforme de travail se présente comme suit.
Les contrôles sont disponibles dans la boîte à outils, ils nous permettent de concevoir notre
interface.

La feuille de style (design) est la fenêtre dans laquelle on conçoit l'interface graphique.
0.1 Les MsgBox et InputBox
MsgBox et InputBox sont des fenêtres de dialogue pour capter l'attention de l'utilisateur.
Changez la source de données
Sélectionnez Avancées et entrez les mêmes valeurs qu'à la figure suivante.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


16

0.1.1.1 La MessageBox
MessageBox.Show, méthode
Affiche un message avec le texte spécifié.
Exemple : Messagebox.show « Bonjour »
MessageBox.Show(TextBox1.Text)
variable=inputbox("Saisir un nombre")
0.2 Le premier objet : la feuille ou le formulaire :
Le premier objet est la feuille ou formulaire.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


17

N° Objet/contrôle Propriétés/Méthodes/Evenement usuelles Exemples/aperçu

1 Feuille ou formulaire Name : Nom de la feuille à utiliser dans le code Private Sub Form1_Load()
With Me.Button1
Text : Le texte associé à la barre de titre du formulaire tel que .ForeColor = Color.Red
.Text = "Mon texte"
« Form1 » .Left = 50
.Top = 10
Form_Load : appelé lors du chargement du formulaire .Height = 50
.Width = 150
Les fonctions Show() et Close() permettent d'ouvrir et fermer
End With
les formulaires End Sub
Private Sub BT_FERMER_Click()
Me.Close ()
End Sub
Bouton de commande Name : Nom à utiliser dans le code Private Sub Button1_Click()

Text : Le texte qui apparait sur le bouton MessageBox.Show("Bonjour")


End Sub
Click() : événement par défaut
End Class

2 Label ou étiquette Name : Nom à utiliser dans le code


Text : Le texte qui apparaitre dans le label ou dans une Textbox Théophile
K.
Font : la police utilisée pour afficher le texte dans le textbox
Forecolor : la couleur de la police 0974950964
Backcolor : couleur de remplissage du contrôle
TextAlign : Alignement du texte dans la zone (Left, Center, Right)

3 Zone de texte : ScrollBar : indique le type de barre de défilement Les événements possibles
(Horizontale, verticale ou les deux) lorsque le Change () : qui intervient lorsque l’on
multiline est activé saisit du texte dans une zone de texte
Cursor : Type de curseur qui s’affiche lorsque le pointeur Click () : lorsque l’on clic
passe sur le contôle
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
18

Enabled : (True/False) indique que le contrôle est activé ou pas


Multiline : (True/False) indique si le texte saisi peut s’étendre sur
plusieurs lignes dans la zone de texte
PassWordChar : indique le caractère à afficher pour la saisie mot
de passe
Visible : indique si le contrôle peut être visible ou non lors de
l’exécution
Borderstyle : Style de trait de bordure
4 Liste déroulante ou Combobox Name : Nom de la zone de liste modifiable

Text : texte associé au contrôle


Les combobox (aussi appelées DropDownList),
sont des boîtes déroulantes
Cliquer ici pour ajouter les éléments à la liste MaxDropDownItem : Nombre maximal d’éléments à
déroulante soit par saisie simple ou puiser les afficher dans une liste déroulante
données d’une table quelconque
Items : éléments de la liste déroulante

Selected value : récupére la valeur sélectionnée


Datasource : Les combobox sont utiles pour choisir une
valeur dans une liste déroulante

5 ListBox

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


19

6 Les checkbox sont utiles pour les choix


multiples.

7 Les boutons radio permettent un choix checked


unique dans une
liste.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


20

0.2.1 LES MENUS


Il est possible de créer toutes sortes de menus
0.2.2 La barre de menus
0.2.2.1.1 Création graphique
Prenez l'objet MenuStrip et insérez-le sur votre feuille (feuille vide de préférence), comme à
la figure suivante.
Le menu se place automatiquement en haut de votre feuille.
La propriété est Dock, nous offre la possibilité de paramétrer cette propriété en cliquant sur la
petite flèche en haut à droite de notre menu, comme à la figure suivante.

Il est possible de paramétrer la propriété

Créez un second menu

0.2.3 Le menu contextuel


Le menu contextuel est visible lors du clic droit.
Pour le créer ; il faut prendre le ContextMenuStrip et l'intégrer à la feuille. Une fois cela fait,
créez un élément contenant le texte : « Déplacer le label ici ». Ensuite, comme à l'accoutumée,
on crée son événement correspondant. Dans cet événement, nous allons récupérer la position
du curseur et changer la propriété location du label :
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
21

1Me.LBL_TEXTE.Location = Control.MousePosition

Control.MousePosition est la propriété de position de la souris (Control). Eh oui, même la


souris a des propriétés, vous en rêviez, n'est-ce pas ?
 Il existe des menus contextuels, des barres de menus, des barres d'outils…
 Le menu contextuel apparaît lors du clic droit de la souris.
 Les menus sont réservés aux applications volumineuses et nécessitant une grande
interaction avec l'utilisateur.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


22

Chapitre 3 : INTRODUCTION SUR LES BASES DE


DONNÉES
Nous allons apprendre à stocker les informations dans des bases de données.
0.3 Concepts de base
0.3.1 Qu'est-ce qu'une base de données ?
Une BDD stocke donc les informations à l'instar d'un fichier. Une BDD est en effet un fichier,
mais enregistré dans un format spécial et terriblement complexe.
À l'instar d’une armoire (appelée base), une BDD est divisée en différentes tables (les tiroirs)
et c'est à l'intérieur de ces tables que l’on stocke les données.
Voici un tableau représentant une table.
Table Musiques
N° Artiste Titre Album
1 Don't Cry (Original) Guns N' Roses Greatest Hits
2 Metallica Nothing Else Matters Metallica
3 Saez Jeune et Con Jours étranges
4 Noir Désir Un jour en France 666.667 Club
0.3.2 Lexique
Cette sous-partie va présenter un peu de vocabulaire spécifique aux bases de données, ces
termes sont fréquemment utilisés, vous pourrez vous en servir à tout moment.
0.3.2.1 Base de données relationnelle
Une base de données relationnelle est un type de base de données qui utilise des tables pour le
stockage d'informations. Elles utilisent des valeurs issues de deux tables, pour associer les
données d'une table aux données d'une autre table. En règle générale, dans une BDD
relationnelle, les informations ne sont stockées qu'une seule fois.
0.3.2.2 Table
Une table est un composant d'une base de données qui stocke les informations dans des
enregistrements (lignes) et des champs (colonnes). Les informations sont généralement
regroupées en catégories au niveau d'une table. Par exemple, il y aura la table des Clients,
des Produits ou des Commandes… dans le contexte d'un magasin.
0.3.2.3 Enregistrement
L'enregistrement est l'ensemble des informations relatives à un élément d'une table. Les
enregistrements sont les équivalents des lignes d'une table. Par exemple, une
table Clients contient les caractéristiques d'un client en particulier.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


23

0.3.2.4 Champ
Un enregistrement est composé de plusieurs champs. Chaque champ d'un enregistrement
contient une seule information sur l'enregistrement.
Par exemple, un enregistrement Client peut contenir les champs CodeClient, Nom, Prénom…
0.3.2.5 Clé primaire
Une clé primaire est utilisée pour identifier, de manière unique, chaque ligne d'une table. La clé
primaire est un champ ou une combinaison de champs dont la valeur est unique dans la table.
Par exemple, le champ CodeClient est la clé primaire de la table Clients, il ne peut pas y avoir
deux clients ayant le même code.
0.3.2.6 Clé étrangère
Une clé étrangère représente un ou plusieurs champs d'une table, qui font référence aux champs
de la clé primaire d'une autre table. Les clés étrangères indiquent la manière dont les tables sont
liées.
0.3.2.7 Relation
Une relation est une association établie entre des champs communs dans deux tables. Une
relation peut être de un à un, de un à plusieurs, ou de plusieurs à plusieurs. Grâce aux
relations, les résultats de requêtes peuvent contenir des données issues de plusieurs tables. Une
relation de un à plusieurs entre la table Clients et la table Commandes permet à une requête de
renvoyer le numéro des commandes correspondant à un client.
0.3.3 Les SGBD
Les SGBD (systèmes de gestion de base de données) sont des programmes qui s'occupent du
stockage des données. Un SGBD est en fait un logiciel qui joue le rôle d'interface entre
l’utilisateur et la base de données. Un SGBD permet de décrire, manipuler et interroger les
données d'une BDD manuellement. Il est utilisé dans un premier temps pour structurer la BDD
: création de tables et de champs.
Il en existe plusieurs SGBD, dont voici les plus connus :
 Microsoft SQL Server : le SGBD de Microsoft, nous l'utiliserons dans ce cours.
 MySQL : c'est un des SGBD les plus populaires.
 Oracle : c'est le SGBD le plus utilisé en entreprise, le plus complet aussi… mais payant
!
 PostgreSQL : ressemble un peu à MySQL, avec plus de fonctionnalités, mais un peu
moins connu.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


24

0.3.4 VB .NET et SGBD


Pour demander des informations à la base de données c-à-g permet de dialoguer avec la base
de données, il faut utiliser le langage SQL (langage de requêtes structurées).
Le langage SQL est un standard, c'est-à-dire que, quel que soit le SGBD que vous utilisez, vous
utiliserez le langage SQL. Le seul problème, c'est qu'il existe plusieurs langages SQL (en
fonction du SGBD), dans ce cours nous utiliserons du langage SQL « neutre », donc
indépendant de toute base de données.
Nous allons utiliser le SQL Server au moyen du VB.Net (par l'intermédiaire d'ADO.NET
Le langage Visual Basic .NET va servir d'intermédiaire entre l’utilisateur et SQL Server.

0.4 SQL Server 2008 R2


0.4.1.1 Notre SGBD
Pour dialoguer avec une base de données, il nous faut un outil adapté.
Nous allons utiliser le langage VB .NET et le langage SQL. Nous pourrons créer des bases de
données et lier cette base de données avec Visual Basic Express. SQL Server est un SGBD de
Microsoft.
Grâce à ce SGBD, on peut stocker des données sur une base et gérer ces données en les
modifiant et en les mettant à jour.
0.4.1.1.1 SQL Server 2008 R2
Microsoft a déjà sorti plusieurs versions de SQL Server, nous allons utiliser dans la suite de ce
tutoriel SQL Server 2008 R2, car il s'adapte très bien avec les suites Express de Visual Studio.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


25

0.4.2 Installation de SQL Server 2008 R2


0.4.2.1 Étape par étape
Avant toute chose, il faut télécharger SQL Server. Vous devriez arriver sur une page semblable
à la figure suivante. Cliquez sur Télécharger.

0.4.3 Découverte de l'interface


0.4.3.1 L'interface de SQL Server 2008 R2
Vous avez maintenant installé le SGBD SQL Server 2008 R2. Il est temps de découvrir un peu
l'interface de travail.
Allez dans
Démarrer / Tous les programmes > Microsoft SQL Server 2008 R2 > SQL Server Management
Studio. Cette fenêtre va apparaitre et vous demander de vous connecter au serveur.

Remplissez de la même manière : « (local) » pour le server name et « sa » comme login. Puis
entrez le mot de passe que vous avez choisi lors de l'installation.
Si la connexion est correcte, vous accédez à l'interface de SQL Server Management Studio.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


26

On constate rapidement que l'interface principale de SQL Manager est très simple. Elle est
formée d'un menu contextuel, d'une barre d'outils et d'une fenêtre Explorer à gauche, comme à
la figure suivante.

La page d'accueil
0.5 INTRODUCTION AU LANGAGE SQL
0.5.1 Recherche d’informations avec l’instruction SELECT
Cette instruction est utilisée pour renvoyer des champs spécifiques d'une ou de plusieurs tables
de la base de données.
Par exemple, pour extraire la liste des Artistes et des Titres de tous les enregistrements de la
table Musiques, on utlise le code suivant :
SELECT Artiste, Titre FROM Musiques ou SELECT * FROM Musiques
0.5.1.1 Les clauses utlisées avec Select
La clause va permettre de spécifier les conditions : seule une partie des enregistrements seront
concernés.
Il existe en SQL des conditions associées à la clause WHERE tout comme en VB .NET :
AND
OR
Condition = != < > <= >= ou
ou ||
&&
Égal Différent Inférieur Supérieur Inférieur Supérieur Et Ou
Valeur
ou égal ou égal

Clause Exemple Effet


WHERE SELECT * FROM Musiques WHERE Titre = ' Renvoi la liste des musiques
Nothing Else Matters' dont le tritre est égal à
« Nothing Else Matters »
WHERE… SELECT * FROM Artistes WHERE Pays IN ( Renvoit les artistes nés en
IN 'France'); France
WHERE… SELECT * FROM Albums WHERE DateSortieA récupére la liste des albums de
BETWEEN lbum l'année 2011
BETWEEN '01/01/11' AND '31/01/11'

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


27

WHERE… SELECT * FROM Artistes WHERE Nom LIKE recherche tous les artistes dont
LIKE 's%' le nom commence par un « s »

ORDER SELECT * FROM Artistes ORDER BY Nom DE retourne les artistes triés par
BY….. SC, Prenom ASC ordre décroissant sur le nom
ASC ou
DESC

0.5.2 Ajouter des informations avec INSERT


Grâce au SQL, nous pouvons aussi ajouter des informations dans une table avec la commande
INSERT INTO.
INSERT INTO Musiques (Numero, Artiste, Titre, Album) VALUES (5, 'Blood Brothers', 'I
ron Maiden', 'Brave New World')
Le mot-clé VALUES va permettre d'entrer les données entre parenthèses, on entre les
informations dans le même ordre que celles d'avant VALUES.
le code peut être condensé comme suit :
INSERT INTO Musiques VALUES (5, 'Blood Brothers', 'Iron Maiden', 'Brave New Worl’)
NB. : L'instruction INSERT exige que tous les champs soient remplis. Toute valeur manquante
doit être remplacée par NULL.
INSERT INTO Musiques VALUES (5, 'Blood Brothers', NULL, NULL)
0.5.3 La mise à jour d'informations avec UPDATE
Cette instruction permet de mettre à jour plusieurs champs de plusieurs enregistrements d'une
table, à partir des expressions qui lui sont fournies.
Le mot-clé SET va permettre cette affectation.
Si l'on veut que les modifications ne se fassent que sur un ensemble limité d'enregistrements,
on doit utiliser la clause WHERE. Si aucune clause n'est indiquée, la modification se fera sur
tous les enregistrements de la table !
Par exemple, pour modifier le titre d'une chanson, on utilise le code suivant :
UPDATE Musique SET Titre = 'nouveau titre' WHERE Numero = 4
La modification du titre de la chanson ne portera ici que sur l'enregistrement qui porte le numéro
4 !.
0.5.4 Supprimer des informations avec DELETE
Cette instruction sert à supprimer un ou plusieurs enregistrements d'une table.
La commande suivante efface tous les enregistrements de la table Musiques :
DELETE FROM Musiques
Tandis que celle-ci ne supprime qu'un seul enregistrement :

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


28

DELETE FROM Musiques WHERE Numero = 2


 SELECT permet d'effectuer des recherches et de récupérer des données.
 UPDATE met à jour des données.
 INSERT ajoute des données.
 DELETE supprime des données.
0.6 CRÉATION ET REMPLISSAGE DE LA BDD
0.6.1 Création de notre base de données (BDD)
Lancez Microsoft SQL Server Management Studio et connectez au serveur local
(authentification réussie)..
F8 permet de réouvrir cette fenêtre si vous la fermez par mégarde.

Effectuez un clic droit sur le dossier Databases, puis sélectionnez New Database.
Saisr le nom de votre BDD par exemple « BDCours ».

Donnez un nom à votre base de données


Vous devriez maintenant la voir en agrandissant le dossier Databases, comme à la figure
suivante.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


29

BDCours

0.6.2 La création de la table


Nous allons donc créer une table pour y insérer des données. Sous l’interface de SQL Server,
effectuez un clic droit sur Tables, puis New table.
Commençons par spécifier le nom de notre table.
Pour nommer votre table, remplacez le Table_1 de la fenêtre de droite par Musiques.
0.6.2.1 La création des champs
Pour créer un champ, entrez son nom dans Column name (dans la fenêtre au centre), son type
de données et si on lui autorise les NULL.
0.6.3 Le remplissage de données
Nous avons trois moyens d'ajouter des données dans notre base de données.
 Le langage SQL (vu précédemment) ;
 Le code Visual Basic ;
 L'interface de SQL Server.
0.6.3.1 Via des requêtes SQL
L'utilisation de requêtes SQL peut nous permettre de créer notre base de données et de la
remplir.
Pour utiliser ces requêtes nous allons devoir les soumettre à notre base de données qui va les
exécuter.
 Insertion :
Pour ajouter une musique par exemple : Insert into Musiques(Titre, Artiste) values
('Hotel California', 'Eagles').

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


30

 Modification :
Pour ajouter un classement à une musique : UPDATE Musiques SET Classement=7
WHERE Titre='Hotel California' AND Artiste='Eagles'.
 Affichage :
Pour afficher la table sous forme de tableau : SELECT * FROM Musiques.
Pour exécuter une requête, effectuez un clic droit sur la base BDCours, puis New query. Entrez
votre requête SQL dans le panel central, puis cliquez sur Execute dans la barre de menu. Vous
devriez obtenir quelque chose de similaire à la figure suivante.

BDCours

0.7 LA COMMUNICATION VB .NET - BDD


Nous allons étudier et utiliser un concept spécialement conçu pour ça : ADO.NET.
0.7.1 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 namespaceSystem.Data.SqlClient pour pouvoir l'utiliser.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


31

0.7.1.1 Le fonctionnement d'ADO.NET


Créons un projet console pour apprendre le fonctionnement d'ADO.NET.
On effectue donc un Imports :
1 Imports System.Data.SqlClient
On va différencier trois types d'accès à la BDD :
 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 modification par exemple.
Dans tous les cas, on doit se connecter à la BDD en utilisant un objet de type SqlConnection.
Voici à la figure suivante un schéma pour résumer les trois cas de figure qui se présentent à
nous.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


32

0.7.2 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 :
"DataSource=localhost;InitialCatalog=SDZ;UserId=sa;Password=*******;
".
À modifier 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 :
1Dim Connexion As New SqlConnection("Data Source=localhost;Ini
tial Catalog=SDZ;User Id=sa;Password=*******;")
Cet objet est donc de type SqlConnection.
Il faut ouvrir la connexion avec la méthode Open().
1Connexion.Open()

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


33

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 :
1Try
2 Connexion.Open()
3Catch ex As Exception
4 Console.WriteLine(ex.Message)
5End Try
Attention, il faut toujours fermer sa connexion à la fin du programme avec un Close() :
1Connexion.Close()
… à mettre dans un finally par exemple.
Voilà, vous êtes connectés à votre base de données.
0.7.3 Insertion ou modification
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 :
1Dim Requete As String = "Insert into Musiques(Titre, Artiste)
values ('Hotel California', 'Eagles')"
2Dim 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 modification. Dans le cas d'une
insertion, ce sera souvent 1. Mais certaines modifications de masses (comme des update)
pourront en modifier un grand nombre.
On execute donc la requête (avec un Try… Catch).
1Try
2 Commande.ExecuteNonQuery()
3Catch ex As Exception
4 Console.WriteLine(ex.Message)

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


34

5End 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 :
1Imports System.Data.SqlClient
3Module Module1
5 Sub Main()
7 Dim Connexion As New SqlConnection("Data Source=localhost;I
nitial Catalog=SDZ;User Id=sa;Password=********;")
9 Try
10 Connexion.Open()
12 Dim Requete As String = "UPDATE Musiques SET Album='Al
bum inconnu' WHERE Album is null"
13 Dim Commande As New SqlCommand(Requete, Connexion)
14 Try
15 Console.WriteLine("Il y a eu " & Commande.ExecuteN
onQuery() & " lignes mises à jour")
16 Catch ex As Exception
17 Console.WriteLine(ex.Message)
18 End Try
20 Commande.Dispose()
21 Connexion.Close()
23 Catch ex As Exception
24 Console.WriteLine(ex.Message)
25 End Try
27 End Sub
29End Module
Avec comme résultat 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 figure suivante.

Le résultat en BDD
0.7.4 Lecture de données
Maintenant que vous savez exécuter une requête d'ajout ou de modification, 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'.
Je crée cette requête et mon objet SqlCommand :

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


35

1Dim Requete As String = "SELECT Artiste from Musiques Where T


itre = 'Jeune Et Con'"
2Dim Commande As New SqlCommand(Requete, Connexion)
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.
0.7.4.1.1 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écifiant s'il y a ou non une valeur à lire.
Puis il faut y accéder en spécifiant le champ que l'on veut lire.
La figure 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 :
1Dim MonReader As SqlDataReader = Commande.ExecuteReader()
Puis on teste s'il y a une valeur et on l'affiche :
1If MonReader.Read() Then
2 Console.WriteLine(MonReader("Artiste").ToString)
3Else
4 Console.WriteLine("Aucun artiste trouvé")
5End If
Et la console nous affiche fièrement :
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
36

Saez
La figure 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.
0.7.4.1.2 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, je l'exécute avec mon SqlAdapter et je crée mon DataSet.
1Dim Requete As String = "SELECT * from Musiques"
2Dim Commande As New SqlCommand(Requete, Connexion)
3Dim Adaptateur As New SqlDataAdapter(Commande)
4Dim MonDataSet As New DataSet
Maintenant la ligne magique qui va remplir notre DataSet avec le résultat de la commande :
1Adaptateur.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 !

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


37

 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éfinissant une SqlConnection et une chaîne de connexion.
 On exécute des requêtes SQL avec ExecuteNonQuery.
0.8 Le contrôle DATASET
Le contrôle ADO.NET c'est bien beau mais ça nous limite assez vite. En effet, pour de très
grandes requêtes, il va falloir itérer sur l'intégralité des résultats avant d'avoir la valeur
recherchée.
Imaginons maintenant que nous n'ayons plus à manipuler manuellement les données récupérées
mais que des objets aient été conçus spécialement pour contenir des « Bases de données ». on
n'a aucun intérêt à stocker l'ensemble de notre base dans un objet. Par contre on va pouvoir
récupérer les résultats et les manipuler plus aisément que précédemment. Cet objet existe et
s'appelle un dataset, allons le découvrir.
0.8.1 Qu'est-ce ?
Un DataSet, pour résumer, est une représentation d'une base de données sous forme d'objet. Il
contient des tables, elles-mêmes contiennent des colonnes et des lignes. On pourrait le
schématiser par la figure suivante.

Schéma d'un DataSet


 Les différentes tables sont des objets de type DataTable.
 Les colonnes sont des objets de type DataColumn.
 Et les lignes, des DataRow.
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
38

Les items sont les « cases » du DataSet.


Nous avons donc des tables de type DataTable qui sont des éléments du DataSet. On y accède
soit par leur index (un peu comme un tableau), soit avec le nom de la table (préférable pour être
certain de la table à laquelle on accède).
Puis viennent les lignes et les colonnes, respectivement des DataRow et des DataColumn, qui
sont des éléments d'une DataTable. Si on y accède en utilisant un index, on récupère la ligne ou
la colonne souhaitée, sinon c'est une collection contenant la liste des lignes ou la liste des
colonnes qui est renvoyée.
Et finalement, on a les items, dernier maillon de la chaîne, chacun d'entre eux contient un
élément unique. Ce sont donc des DataItems, ce sont des éléments de DataRow. Ce sont eux qui
contiennent notre donnée.
Nous allons mettre tout ça au clair par des exemples.
0.8.2 La lecture de données
Pour apprendre à lire nos données nous allons réutiliser la commande SQL du chapitre
précédent permettant de récupérer l'ensemble de la table Musiques.
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim Connexion As New SqlConnection("Data Source=localh
ost;Initial Catalog=SDZ;User Id=sa;Password=v3vk4pgd;")
Try
Connexion.Open()
Dim Requete As String = "SELECT * from Musiques"
Dim Commande As New SqlCommand(Requete, Connexion)
Dim Adaptateur As New SqlDataAdapter(Commande)
Dim MonDataSet As New DataSet
Try
Adaptateur.Fill(MonDataSet, "Musiques")
'Analyse du DataSet
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
End Module
On considère donc que les données sont récupérées et prêtes à être analysées où il y a
écrit 'Analyse du DataSet.
Je vous avait dit que lors du remplissage des données le second argument spécifiait le nom de
laDataTable que l'on a créée.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


39

Ainsi, pour accéder au premier artiste de notre table, on utilise :


1MonDataSet.Tables("Musiques").Rows(0).Item("Artiste").ToString
J'accède donc à la colonne avec le nom « Artiste » de la ligne n°0 de la table Musiques. Dur à
suivre ! Mais une fois que vous aurez compris, tout ira mieux !
Des simplifications existent :
1MonDataSet.Tables("Musiques")(0)("Artiste")
Ce code aura le même effet que la précédente instruction. On peut s'affranchir des mots-
clés Rows etItem.
"Artiste" peut également être remplacé par un index numérique.
0.8.2.1.1 Utilisons For Each
Vous vous souvenez de For Each ? Permettant de parcourir toutes les cases d'un tableau par
exemple ?
Eh bien utilisons cette boucle pour parcourir toutes nos lignes !
1'Analyse du DataSet
2For Each Ligne As DataRow In MonDataSet.Tables("Musiques").Ro
ws()
3 Console.WriteLine(Ligne("Artiste").ToString & " - " & Ligne
("Titre").ToString)
4Next
Et voici un listing des musiques et de leur artiste.
Comme je vous le disais, MonDataSet.Tables("Musiques").Rows() renvoie une collection. Et
une collection, au même titre qu'un tableau, a des éléments, on peut donc y accéder avec For
Each.
0.8.2.2 Lecture plus poussée
Vous savez désormais effectuer une lecture de chaque ligne, chaque colonne, chaque case de
votre table.
Nous allons attaquer les views.
« View » signifie « vue » en français. On va donc générer à partir de notre DataSet des vues de
la table. Ces vues sont pratiques, car on va pouvoir les modifier pour, par exemple, trier une
certaine colonne par ordre alphabétique, etc.
Cet objet peut être utile lorsque vous avez de nombreux affichages différents à faire de
votre Table. Plutôt que de faire des dizaines de requêtes SQL à la BDD, on en fait une seule en
rapatriant la table souhaitée dans un DataSet, puis on effectue les différents affichages souhaités
avec des DataView.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


40

Pour créer un DataView on peut passer en paramètre du constructeur la table voulue à laquelle
lier la vue. Je vais donc lui passer la table Musiques :
1Dim MonView As New DataView(MonDataSet.Tables("Musiques"))
Puis on effectue des modifications sur la view.
0.8.2.2.1 Tri
Le tri est la propriété Sort du DataView. On va l'utiliser avec la même syntaxe que le tri SQL,
en spécifiant le champ suivant lequel trier et l'ordre (ASC pour ordre croissant et DESC pour
décroissant).
Ainsi, si je veux trier suivant le champ Artiste et afficher le résultat :
1MonView.Sort = "Artiste ASC" 'On trie les artistes par ordre
croissant
2For Each Ligne As DataRowView In MonView
3 Console.WriteLine(Ligne("Titre") & " - " & Ligne("Artist
e"))
4Next
Cette fois, les lignes ne sont plus des DataRow, mais des DataRowView, car elles proviennent
d'un DataView.
0.8.2.2.2 Filtre
Le filtre s'utilise avec la propriété RowFilter. On spécifie le champ à filtrer et la valeur voulue.
Si je veux afficher uniquement les entrées où l'album est inconnu :
1MonView.RowFilter = "Album = 'Album inconnu'"
C'est encore une syntaxe du type SQL, n'oubliez pas les guillemets autour des chaînes de
caractères.
0.8.2.2.3 La recherche
Pour effectuer une recherche sur un champ, il faut déjà spécifier un tri du DataView avec la
commandeSort. Cela indiquera au DataView dans quel champ effectuer la recherche.
Puis FindRow permettra de rechercher la valeur souhaitée. Cela retournera une collection
de RowView(car il peut y avoir plusieurs fois la même valeur). On peut donc réutiliser un For
Each pour afficher les résultats.
1 MonView.Sort = "Artiste ASC"
2 For Each Ligne As DataRowView In MonView.FindRows("Saez")
3 Console.WriteLine(Ligne("Titre") & " - " & Ligne("Artiste"
))
4Next
La fonction Find, quant à elle, renverra l'index de la première ligne qui correspond à la
recherche. Il faudra ensuite y accéder avec MonView(x), où x est l'index.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


41

0.8.3 L'ajout de données


Un DataSet est fait pour être lié à la BDD, cependant il vous est tout à fait possible de créer le
vôtre de toutes pièces pour un programme sans liaison à la BDD. Pour substituer à un tableau
par exemple.
On a déjà vu chacun des éléments composant le DataSet, on va donc en créer un avec les mêmes
données que notre BDD pour nous entraîner.
On va donc utiliser la méthode Add() qui permet d'ajouter des éléments à chacun des
composants du DataSet (DataTables, DataColumns, DataRows…).
Donc, commençons par créer une table à notre DataSet :
1Dim MonDataSet As New DataSet
2MonDataSet.Tables.Add("Musiques")
Maintenant, attaquons-nous à la création de colonnes.
Comme pour tout, vous avez le choix entre la création séparée d'un objet de type DataColumn,
puis l'ajout en vous servant de cet objet, ou entrer directement les paramètres voulus dans le
constructeur :
1'Création d'un objet de type DataColumn
2Dim MaColonne As New DataColumn
3MaColonne.ColumnName = "Titre"
4MaColonne.DataType = GetType(String)
5MonDataSet.Tables("Musiques").Columns.Add(MaColonne)
6'Utilisation du constructeur
7MonDataSet.Tables("Musiques").Columns.Add("Artiste", GetType(
String))
8MonDataSet.Tables("Musiques").Columns.Add("Album", GetType(St
ring))
9MonDataSet.Tables("Musiques").Columns.Add("Classement", GetTy
pe(Integer))
Et finalement, après la construction de notre structure, on peut ajouter des données.
Comme vous l'avez surement deviné, cela s'effectue avec la méthode
MonDataSet.Tables("Musiques").Rows.Add.
On lui passe en paramètre soit une DataRow construite au préalable, soit plus simplement une
collection d'objets à ajouter.
Exemple, si je veux ajouter un titre à mon DataSet :

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


42

1MonDataSet.Tables("Musiques").Rows.Add("Nothing Else Matters"


, "Metallica", "Metallica", 9)
Il faut bien respecter l'ordre dans lequel vous avez ajouté vos colonnes ! Ici mon ordre est Titre
- Artiste - Album - Classement, je dois donc ajouter des valeurs en suivant cet ordre.
Donc si je veux ne pas mettre d'album, je dois quand même spécifier l'argument en le mettant
vide :
1MonDataSet.Tables("Musiques").Rows.Add("Hotel California", "E
agles", "", 8)
2'Le mot-clé « nothing » (équivalent de NULL) fonctionne aussi
3MonDataSet.Tables("Musiques").Rows.Add("Hotel California", "E
agles", Nothing, 8)
Vous voilà donc avec un DataSet créé de toutes pièces et sur lequel vous allez pouvoir effectuer
les traitements vus précédemment (DataView, puis tri, etc.).
 Le DataSet est un tableau destiné à contenir une base de données.
 Attention à son utilisation, la quantité de mémoire qu'il requiert peut vite devenir
excessive.
 C'est l'objet idéal si on sait que les données ne vont pas changer au cours de l'utilisation
du logiciel.
0.9 L'UTILISATION GRAPHIQUE : LE DATAGRID
Vous savez maintenant bien manipuler votre table et récupérer ses données sans trop de
problèmes. LeDataSet nous a bien servi et vous savez désormais parfaitement l'utiliser et le
manipuler (du moins je l'espère). Cet objet a la particularité de nous faciliter la tâche d'affichage
des données qu'il contient. On va toutefois apprendre à connaître un nouvel objet : le DataGrid.
0.9.1 La découverte du DataGrid
Le DataGrid est un élément graphique qui va nous permettre d'afficher des données récupérées
sur une base de données.
Son utilisation est très simple et le rendu final est agréable, comme le montre la figure suivante.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


43

Voici à quoi ressemble l'affichage d'un DataGrid


Le Datagrid est presque nécessaire lors du travail sur les bases de données.
Lier des données avec notre DataGrid.
Il existe deux grandes voies :
 En se servant du code VB .NET pour lier une DataTable ou un DataView au DataGrid ;
 En utilisant l'assistant de liaison d'un DataGrid à une BDD.
0.9.2 Liaison avec le code VB .NET
Nous allons voir les deux en commençant par notre moyen actuel, c'est-à-dire en se servant du
code .NET.
Créez donc un nouveau projet, graphique cette fois-ci. Ajoutez la composant DataGrid à votre
feuille graphique. Il se trouve dans la rubrique Données. Puis utilisons le code VB que nous
avons déjà utilisé pour forger notre DataSet et plaçons-le dans le FormLoad.

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


SDZ;User Id=sa;Password=********;")
2
3Try
4 Connexion.Open()
5
6 Dim Requete As String = "SELECT * from Musiques"
7 Dim Commande As New SqlCommand(Requete, Connexion)
8 Dim Adaptateur As New SqlDataAdapter(Commande)
9 Dim MonDataSet As New DataSet
10 Try
11 Adaptateur.Fill(MonDataSet, "Musiques")
12
13 'Liaison avec le DataGrid
14
15 Catch ex As Exception
16 Console.WriteLine(ex.Message)
17 End Try
18
19Catch ex As Exception
20 Console.WriteLine(ex.Message)

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


44

21End Try
Nous revoilà donc avec notre DataSet contenant les données de la BDD. Pour le lier avec
notreDataGrid, nous allons devoir utiliser la propriété DataSource de ce dernier.
On peut assigner à DataSource une DataTable ou un DataView, en fonction de ce que l'on
souhaite.
1DG_DataGrid.DataSource = MonDataSet.Tables("Musiques")

J'ai donc lié le DataGrid à ma DataTable, vous pouvez tester le programme et constater qu'il a
parfaitement rempli le composant.
Vous pouvez voir qu'en fait ce DataGrid est une « vue » au même titre qu'un DataView, vous
pouvez effectuer des tris en cliquant sur les colonnes. Il est également possible de modifier les
données (les changements ne seront pas effectifs sur la BDD cependant) ou d'en ajouter.
0.9.3 Liaison via l'assistant
La seconde méthode est d'utiliser l'assistant. Créez un nouveau projet et ajoutez un DataGrid.
Cliquez sur la petite flèche en haut à droite du composant, comme à la figure suivante.

Cliquez sur la petite flèche en haut à droite du composant


Comme vous le voyez, vous pouvez spécifier à partir de cette fenêtre si le DataGrid aura la
possibilité d'ajouter des données, de les modifier, etc. Décochez tout.
Puis cliquez sur Choisir la source de données et Ajouter la source de données du projet,
comme à la figure suivante.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


45

Cliquez sur le lien

Vous voici devant l'assistant d'ajout d'une base de données au projet. Cela va permettre de lier
une base au projet afin de faciliter la liaison d'éléments avec la BDD sans passer par du code
VB .NET.
Suivons donc cet assistant. Dans la première fenêtre, spécifiez Base de données, puis dans la
seconde DataSet.
Cela va ajouter un objet de type DataSet à votre projet (mais visible du côté feuille de design
graphique).
Maintenant, créons notre connexion vers la BDD. Cliquez sur Nouvelle connexion puis
changez la source de données pour utiliser SQL Server (voir figure suivante).
Changez la source de données
Sélectionnez Avancées et entrez les mêmes valeurs qu'à la figure suivante.

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


46

Entrez ces valeurs


Il faut modifier :
 User ID ;
 Password ;
 User Instance ;
 Attach DB Filename et y entrer l'adresse du fichier de BDD
:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\M
SSQL\DATA\SDZ.mdf;
 Initial Catalog ;
 DataSource.
Validez, utilisez la connexion SQL Server et testez la connexion.
Les informations de connexion peuvent différer d'un PC à l'autre, je ne peux pas faire de cas
par cas, donc postez sur le forum si vous rencontrez des difficultés à cette étape.
Puis cliquez sur OK. Vous revoilà à l'ancienne fenêtre, sélectionnez le bouton radio
Oui je veux inclure…, cela ajoutera le mot de passe à la chaîne de connexion.
Elle devrait alors ressembler à ça :
1Data Source=.;AttachDbFilename="C:\Program Files\Microsoft SQL Serv
er\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\SDZ.mdf";Initial Catalog=SDZ;Us
er ID=sa;Password=*******;Connect Timeout=30;User Instance=False
Puis Suivant.
SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE
47

Si le programme vous demande de copier le fichier, répondez Non.


Finalement, ne stockez pas la chaîne dans le fichier de configuration. Lors de plus gros projets,
cette méthode est utile, notamment pour le changement fréquent d'identifiants.
Vous voilà désormais dans la création du DataSet.
Spécifiez que vous souhaitez toute la table SDZ et nommez-la (voir figure suivante).

Cochez toutes les cases de la table


En cliquant sur Terminer, la fenêtre visible à la figure suivante s'affiche.

DataGrid
Vous avez sans doute remarqué les trois objets qui ont été créés suite à cette opération :
 Un DataSet ;
 Un BindingSource qui lie notre source à notre DataSet, car on ne peut pas lier directement
un DataSet donc cet objet effectue la liaison ;

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE


48

 Un TableAdaptater, il effectue la requête pour récupérer les données dans le DataSet. Son
fonctionnement est plutôt particulier et compliqué ; pour plus de souplesse je vous
recommande d'utiliser du code VB plutôt que ces objets en cas de projets nécessitant
des requêtes spécifiques.
Vous voilà en possession du même DataSet que précédemment. Si vous lancez le programme,
le résultat sera le même.

Le résultat est le même que précédemment


 Le DataGrid permet d'afficher graphiquement des données en provenance d'une table.
 On peut ensuite le programmer pour appliquer les modifications que l'utilisateur
effectue.
 L'assistant de VB .NET vous aidera dans l'étape de configuration pour le lier à la BDD.

Bonne évasion

SUPPORT DE LABO INFORMATIQUE (VB .NET) IR. KITAMBALA THEOPHILE

Vous aimerez peut-être aussi