ADO .NET permet de travailler en deux modes :
«Connecté » : le poste client maintient une « connexion » réseau avec le serveur, et lui envoie des requêtes pour lire ou écrire directement dans la base de données distante.
«Déconnecté » : le poste client effectue une copie locale des données en mémoire, dans un DataSet (groupe de données). Le DataSet contient des tables qui permettent de copier et d’organiser les données sur le poste client.
L’objet Connection permet de se connecter à une base de données en donnant le nom du serveur, de la base, et le nom et le mot de passe d’un utilisateur connu du SGDB.
L’objet Command permet d’envoyer à la base de données, des requêtes SQL d’interrogation ou de modification, avec ou sans paramètres.
✓ Avec ExecuteNonQuery de l'objet Command on peut manipuler directement la BD (UPDATE, INSERT, DELETE, CREATE, DROP..).
✓ Avec ExecuteScalar de l'objet Command on peut récupérer les résultats d'une requête SQL qui contient une instruction COUNT (comptage) AVG (moyenne) MIN (valeur minimum) MAX (valeur maximum) SUM (somme).
✓ Avec ExecuteReader de l'objet Command on peut d’exécuter des requêtes SQL de type SELECT qui renvoient des lignes au poste client.
Avec un objet DataReader on extrait les données en lecture seule: une Requête SQL (sur un objet command) charge le DataReader. C’est rapide; on peut lire uniquement les données et aller à l'enregistrement suivant. Il travaille en mode connecté.
Il faut créer un objet Connexion puis un objet Command, ensuite on exécute la propriété ExecuteReader pour créer l'objet DataReader; enfin on parcourt les enregistrements avec la méthode Read.
L’objet DataAdapter est le support du mode « déconnecté ». Il est plus élaboré que le DataReader et contient quatre command s, correspo
Le DataSet est une représentation en mémoire des données. On charge le DataSet à partir de la base de données. Une fois chargé on peut trava
Pour effectuer une modification, on modifie le DataSet puis on met à jour la base de donnée à partir du DataSet. Pour remplir un DataSet il faut une Connexion puis un DataAdapter.
Il faut créer un objet Connexion puis un objet DataAdapter qui par sa propriété Fill charge le DataSet.
Pour mettre à jour la base après modification du DataSet il faut utiliser l’objet CommandBuilder.
Remarque :
Importer dans tous vos programmes l’espace de noms System.Data.SqlClient qui contient le fournisseur de données pour SqlServer.
C’est la fin du
(1 ère faç
Travail demandé :
'Importation de l’espace de nom: Imports System.Data.SqlClient
Public Class Form1
'Création d'une instance de la classe SqlConnection: Dim con As New SqlConnection ("database=Mybase;
server=; integrated security=true")
'Code du Bouton qui permet d'ouvrir la Connection : Private Sub BtnOuvrir_Click (ByVal sender As
con.Open()
Me.TextBox1.Text = con.State.ToString
End Sub
'Code du Bouton qui p
System.Object, ByVal e As System.EventArgs) Handles BtnFermer.Click
con.Close()
Me.TextBox1.Text = con.State.ToString
End Sub End Class
(2éme façon)
'Importation de l’espace de nom: Imports Syste
Public Class Form2
'Création d'une instance de la classe SqlConnection: Dim con As New SqlConnection
'Utilisation de la propriété ConnectionString : Private Sub Form2_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
con.ConnectionString = ("database=Mybase; server=; integrated security=sspi") 'Ouvrir la Connection :
con.Open
'Code du B
Private Sub BtnTestCon_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTestCon.Click
MsgBox ("L'état actuelle de la Connection est
:" + con.State.ToString ()) End Sub
End Class
Travail demandé :
'Importation de l’espace de nom: Imports System.Data.SqlClie
'Création d'une instance de la classe SqlConnection: Dim con As New SqlConnection ("database=Personnes;
server=; integrated security=true")
Private Sub Form3_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.
c
End Sub
'Code du
Private Sub BtnAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAjouter.Click
Dim command As SqlCommand
' Création d’un nouveau command command = New SqlCommand
'On rattache le nouveau command à la connexion en cours
command .Connection = con
' Type de command : ici une requête SQL command.CommandType = CommandTy
command .CommandText = "Insert into personne values (" &
'Utilisation de la propriété ExecuteNonquery: command .ExecuteNonQuery()
MsgBox("Bien ajouter!!",MsgBoxStyle.Information)
End Sub End Class
Travail demandé :
Solution:
'Importation de l’espace de nom: Imports System.Da
Public Class Form1
'Cr
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Hand
End Sub
'Code du Bouton modifier :
Private Sub BtnModifier_Click(ByVal sender As System.Object, ByVal e As Syste
cmd.Parameters.Add("@nom", SqlDbType.NVarChar) cmd.Parameters.Add
cmd.CommandType = CommandType.Text cmd.CommandText = "update personne set [email protected], [email protected] [email protected]" cmd.ExecuteNonQuery()
MsgBox("Bien Modifier!",MsgBoxStyle.Information) End Sub
End Class
Travail demandé :
Solution:
'Importation de l’espace de nom: Imports System.Data.SqlClient
Public Class Form1
'Création d'une instance de la classe SqlConnection: Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load 'Ouvrir la Connection : con.Open()
End Sub
'Code du Button Calculer:
Private Sub BtnCalculer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles BtnCalculer.Click
'La 2eme façon de créé et initialisé un command :
Dim cmd As New SqlCommand("select count(*) from customers ", con)
'L’exécution de le command par ExecuteScalar ():
Me.TxtNbr.Text = cmd.ExecuteScalar() End Sub
End Class
Travail demandé :
o de chercher une personne par son code saisi dans la zone de texte et après son nom et son prénom sera affiché dans les autres zones de texte.
Solution:
'Importation de l’espace de nom: Imports System.Data.SqlClient
Public Class Form1
'Création d'une instance de la classe SqlConnection: Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load 'Ouvrir la Connection : con.Open()
End Sub
'Code du Button chercher:
Private Sub Btnchercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Btnchercher.Click
'Création et initialisation du command :
Dim cmd As New SqlCommand("select * from personne where code=" & Me.TxtCode.Text & "", con)
'Exécution de la command par ExecuteReader : Dim dr As SqlDataReader = cmd.ExecuteReader If dr.Read Then
Me.TxtNom.Text = dr(1) Me.TxtPrenom.Text = dr(2)
Else
MsgBox ("Code introuvable!!",MsgBoxStyle.Exclamation)
End If
'N’oublier pas de fermer ExecuteReader :
dr.Close()
End Sub End Class
Travail demandé :
Solution:
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load con.Open()
'Remplir le combobox au démarrage du formulaire:
Dim cmd As New SqlCommand("select code from personne", con)
Dim dr As SqlDataReader = cmd.ExecuteReader While dr.Read
Me.ComboCode.Items.Add(dr(0))
End While
dr.Close()
End Sub
'Code du Bouton Remplir:
Dim cmd As New SqlCommand ("select Nom, prenom from personne where code=" & Me.ComboCode.Text & "", con)
Dim dr As SqlDataReader = cmd.ExecuteReader Me.ListBox1.Items.Clear()
If dr.Read Then
Me.ListBox1.Items.Add(" Le nom est :" + dr(0) + "") Me.ListBox1.Items.Add("Le Prénom est :" + dr(1) + "")
End If dr.Close()
End Sub End Sub
End Class
Travail demandé :
Solution:
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load con.Open()
End Sub
'Code du Button Remplir le Datagrid:
Private Sub BtnRemplir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRemplir.Click
'Déclaration de deux tables (Mytable et dt):
Dim mytable As New DataTable Dim dt As New DataTable
'Vider la table Mytable : mytable.Rows.Clear() mytable.Columns.Clear()
Dim req As String = "select * from personne" Dim cmd1 As New SqlCommand(req, con)
Dim dr As SqlDataReader = cmd1.ExecuteReader
'La méthode GetSchemaTable Permet de récupérer 'les informations des colonnes (schéma des 'données) dans un objet DataTable.
Travail demandé :
« Premier, Suivant, Précèdent, Dernier ».On travaille avec la table: Personne (Code, Nom, Prénom). (Penser d’utiliser une collection).
Solution:
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
con.Open()
Dim req As String = "select * from personne" Dim cmd As New SqlCommand(req, con)
Dim dr As SqlDataReader = cmd.ExecuteReader While dr.Read
With Per
Per.Code = dr(0) Per.Nom = dr(1) Per.Prenom = dr(2)
End With coll.Add(Per)
End While dr.Close()
End Sub
'Création d’une structure : Public Structure Personne Public Code As Integer Public Nom As String Public Prenom As String End Structure
Dim Per As Personne
'Instanciation d’une collection : Dim coll As New Collection
Dim pos As Integer
'Code du Button Premier:
Private Sub BtnPremier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPremier.Click
pos = 1
Per = coll.Item(pos) Me.TxtCode.Text = Per.Code Me.TxtNom.Text = Per.Nom Me.TxtPrenom.Text = Per.Prenom
End Sub
'Code du Button Dernier:
Private Sub BtnDernier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDernier.Click
pos = coll.count
Per = coll.Item(pos) Me.TxtCode.Text = Per.Code Me.TxtNom.Text = Per.Nom Me.TxtPrenom.Text = Per.Prenom
End Sub
'Code du Button Précédent:
Private Sub BtnPrécédent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrécédent.Click
pos = pos-1
Per = coll.Item(pos) Me.TxtCode.Text = Per.Code Me.TxtNom.Text = Per.Nom Me.TxtPrenom.Text = Per.Prenom
End Sub
'Code du Button Suivant:
Private Sub BtnDernier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDernier.Click
pos = pos+1
Per = coll.Item(pos) Me.TxtCode.Text = Per.Code Me.TxtNom.Text = Per.Nom Me.TxtPrenom.Text = Per.Prenom
End Sub
End Class
Travail demandé :
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
'Création des objets sqldataAdapter,Dataset et 'SqlCommandBuilder:
Dim da As SqlDataAdapter Dim ds As New DataSet
Dim builder As SqlCommandBuilder
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
da = New SqlDataAdapter("select * from personne" , con)
da.Fill (ds, "personne")
End Sub
'Code du Button Ajouter:
Private Sub BtnAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAjouter.Click
Dim ligne As DataRow
ligne = ds.Tables("personne").NewRow ligne(0) = Me.TxtCode.Text
ligne(1) = Me.TxtNom.Text ds.Tables("personne").Rows.Add(ligne) builder = New SqlCommandBuilder(da) da.Update(ds, "personne") ds.Tables("personne").GetChanges() ds.AcceptChanges()
MsgBox("Bien Ajouter!!",MsgBoxStyle.Information)
End Sub
'Code du Button Modifier:
Private Sub btnModifier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModifier.Click
Dim req As String = "update personne set Nom='" & Me.TxtNom.Text & "', prenom='" & Me.TxtPrenom.Text & "' where Code= " & Me.TxtCode.Text & ""
da = New SqlDataAdapter (req, con) da.Update(ds, "personne")
builder = New SqlCommandBuilder(da) ds.Tables("personne").AcceptChanges() MsgBox("Bien Modifier!!", MsgBoxStyle.Information)
End Sub
'Code du Button Supprimer:
Private Sub btnSupprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSupprimer.Click
Dim req As String = "delete from personne where Code="& Me.TxtCode.Text & ""
da = New SqlDataAdapter(req, con) builder = New SqlCommandBuilder(da) da.Update(ds, "personne") ds.Tables("personne").AcceptChanges() da.Fill(ds, "personne")
MsgBox("Bien Supprimer !!", MsgBoxStyle.Information)
End Sub
End Class
Travail demandé :
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=Personnes; server=; integrated security=true")
'Création des objets sqldataAdapter,Dataset : Dim da As SqlDataAdapter
Dim ds As New DataSet Dim pos As Integer
'Le code pour le Bouton remplir :
Private Sub BtnRemplir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRemplir.Click
pos = 0
da = New SqlDataAdapter("select code from personne", con)
ds.Clear()
da.Fill(ds, "CodePer") Me.ComboCode.Items.Clear()
While pos < ds.Tables("CodePer").Rows.Count - 1
Me.ComboCode.Items.Add(ds.Tables("CodePer").Rows(pos).Item(0))
pos = pos + 1 End While
da = New SqlDataAdapter("select prenom from personne", con)
da.Fill(ds, "prenomPer") Me.ListBox1.Items.Clear() pos = 0
While pos < ds.Tables("prenomPer").Rows.Count - 1 Me.ListBox1.Items.Add(ds.Tables("prenomPer").Rows(pos
).Item(0))
Me.ListBox1.Items.Add("-----------------")
pos = pos + 1 End While End Sub
End class
Travail demandé :
Solution:
Imports System.Data.SqlClient Public Class Form1
Dim con As NewSqlConnection("database=personnes; server=; integrated security=sspi")
Dim da As SqlDataAdapter Dim ds As New DataSet Dim pos As Integer
'Remplir le combobox au démarrage du formulaire: Private Sub Form1_Load (ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
pos = 0
da = New SqlDataAdapter("select code from personne", con)
ds.Clear()
da.Fill(ds, "CodePer") Me.ComboCode.Items.Clear()
While pos < ds.Tables("CodePer").Rows.Count -
1Me.ComboCode.Items.Add(ds.Tables("CodePer").Rows(pos)
.Item(0))
End Sub
'Code de la Bouton Remplir :
Private Sub BtnRemplir_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRemplir.Click
da = New SqlDataAdapter("select * from personne where code=" & Me.ComboCode.Text & "", con)
ds.Clear() da.Fill(ds, "Perso")
Me.DataGrid1.SetDataBinding(ds, "perso") End Sub
End Class
Travail demandé :
« Premier, Suivant, Précèdent, Dernier ».On travail avec la table:
Personne (Code, Nom, Prénom).
Solution:
Imports System.Data.SqlClient Public Class Form1
Dim con As New SqlConnection ("database=personnes; server=; integrated security=sspi")
Dim da As SqlDataAdapter Dim ds As New DataSet Dim pos As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
da = New SqlDataAdapter("select * from personne", con) da.Fill(ds, "personne")
End Sub
'Code du Button Premier:
Private Sub BtnPremier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPremier.Click
pos = 0 Me.TxtCode.Text=ds.Tables("personne").Rows(pos).Item(0) Me.TxtNom.Text =ds.Tables("personne").Rows(pos).Item(1) Me.TxtPren.Text=ds.Tables("personne").Rows(pos).Item(2)
End Sub
'Code du Button Dernier:
Private Sub btnDernier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDernier.Click
pos = ds.Tables("personne").Rows.Count – 1 Me.TxtCode.Text=ds.Tables("personne").Rows(pos).Item(0) Me.TxtNom.Text =ds.Tables("personne").Rows(pos).Item(1) Me.TxtPren.Text=ds.Tables("personne").Rows(pos).Item(2)
End Sub
'Code du button Précédent:
Private Sub bntPrécédent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles bntPrécédent.Click
pos = pos - 1 Me.TxtCode.Text =
ds.Tables("personne").Rows(pos).Item(0) Me.TxtNom.Text =
ds.Tables("personne").Rows(pos).Item(2)
End Sub
'Code du button Dernier:
Private Sub btnSuivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnSuivant.Click
pos = pos + 1 Me.TxtCode.Text =
ds.Tables("personne").Rows(pos).Item(0) Me.TxtNom.Text =
ds.Tables("personne").Rows(pos).Item(1) Me.TxtPrenom.Text =
ds.Tables("personne").Rows(pos).Item(2) End Sub
End Class
Travail demandé :
On va travailler avec la base de données Produit_Client qui contient les deux tables :
Client (Code_Cli, Nom_Cli, Pren_Cli)
Produit (Code_Pro, Nom_Pro, Prix_Pro, Code_Cli)
➢ Ecrire le code du chargement de la feuille.
➢ Ecrire le code qui permet de remplir le combobox.
➢ Ecrire le code pour les boutons de déplacements (Premier, Suivant, Précèdent, Dernier).
➢ Ecrire le code pour les boutons : Nouveau, Ajouter, Modifier et Supprimer.
➢ Ecrire le code du chargement de la feuille.
➢ Ecrire le code qui permet de remplir le combobox.
➢ Ecrire le code pour les boutons de déplacements
(Premier, Suivant, Précèdent, Dernier).
➢ Ecrire le code pour les boutons : Nouveau, Ajouter, Modifier et Supprimer.
Solution:
Imports System.Data.SqlClient
'On va ajouter un module (parce que on travail par plusieurs formulaire):
Module Module1
Public con As New SqlConnection ("database=Client_Produit; server=; integrated security=sspi")
Public cmd As SqlCommand Public dr As SqlDataReader Public da As SqlDataAdapter Public ds As New DataSet
Public Form_Client As New Form2 Public Form_Produit As New Form3 Public pos As Integer
End Module
'Code du formulaire MDI:
Public Class Form1
Handles MyBase.Load
'Le formulaire devient un MDI: Me.IsMdiContainer = True
End Sub