Chapitre 7:
Appeler une procédure stockée à
l'aide d'ADO.NET et VB.NET
1
Procédure stockée
• Il y a deux types d’appel pour les procédures
stockées :
– Appel d'une procédure stockée sans paramètres
– Appel d'une procédure stockée avec des
paramètres.
2
Procédure stockée
• Supposant qu’on a la procédure stockée
suivante :
• create procedure PS_Client
As
Begin
select * from Client
End
3
Utilisation d'une procédure stockée
sans paramètres.
1) Création d‘un obj. Command
2) Spécification du type de Command (avant on
utilisait CommandText pour saisir une requête) avec
CommandType.StoredProcedure
3) On fait appel à la procédure stockée avec
CommandText = « nom-proc »
4) Création du DataAdapter pour exécuter cmd
4
Utilisation d'une procédure stockée sans
paramètres.
:
• Dans le Button_Click
' Création d‘un obj. Command
Dim cmd As OleDbCommand = cn.CreateCommand()
' Spécification du type de Command
cmd.CommandType = CommandType.StoredProcedure
‘ Appel de la procédure stockée
cmd.CommandText = " PS_Client "
‘ Création du DataAdapter en exécutant cmd (en le passant en
‘paramètre)
Dim Da As New OleDbDataAdapter(cmd)
‘mettre le résultat dans le dataset
Dim ds As New DataSet
Publicité
Da.Fill(ds, "PS_Clients")
'On veut afficher le résultat de PS_Clients dans un dataGridView
DataGrid1.DataSource = ds.Tables(" PS_Clients ")
5
Procédure stockée avec paramètres (I)
• Supposant qu’on a la procédure stockée
suivante :
• create procedure PS_ClientId (@code int)
As
Begin
select * from Client where code= @code
End
6
Utilisation d'une procédure stockée
avec des paramètres (I).
1) Création d‘un obj. Command (cmd)
2)
Spécification du type de Command avec
CommandType.StoredProcedure
3) On fait appel à la procédure stockée avec CommandText =
« nom-proc »
4) Ajouter le paramètre d’entrée de la procédure stockée à cmd
en utilisant la propriété Parameters de OleDbCommand ainsi
que son type
5) Préciser la direction du paramètre
ParameterDirection.Input|Output|InputOutput|ReturnValue
6) Création du DataAdapter pour exécuter cmd
7
Utilisation d'une procédure stockée avec
paramètres (I).
• Dans le Button_Click :
' Création d‘un obj. Command
Dim cmd As OleDbCommand = cn.CreateCommand()
' Spécification du type de Command
cmd.CommandType = CommandType.StoredProcedure
‘ Appel de la procédure
cmd.CommandText = " PS_ClientId "
‘Ajouter le paramètre d’entrée de la procédure stockée à
‘cmd en utilisant la propriété Parameters de
‘OleDbCommand ainsi que son type
Cmd.Parameters.Add (" @code ", OleDbType.Integer)
8
Utilisation d'une procédure stockée
avec des paramètres (I).
‘préciser la direction du paramètre (ParameterDirection.Input)
Publicité
Cmd.Parameters ("@code" ).Direction =
ParameterDirection.Input
‘donner une valeur à @code. Conversion Str to Int avec val ()
Cmd.Parameters ("@code" ).Value= val(TextBox1.Text)
‘ Création du DataAdapter pour exécuter cmd
Dim Da As New OleDbDataAdapter(cmd)
‘mettre le résultat dans le dataset
Dim ds As New DataSet
Da.Fill(ds, " PS_ClientId ")
'On veut afficher le résultat de PS_ClientId dans un dataGridView
DataGrid1.DataSource = ds.Tables(" PS_ClientId ")
9
Utilisation d'une procédure stockée
avec des paramètres (I).
10
Utilisation d'une procédure stockée
avec des paramètres (I).
• Ajouter Ds.clear() au début du code Button_Click
11
Procédure stockée avec paramètres (II)
12
Utilisation d'une procédure stockée avec
paramètres (II).
• Dans le Button_Click
:
' Création d‘un obj. Command
Dim cmd As OleDbCommand = cn.CreateCommand()
' Spécification du type de Command
cmd.CommandType = CommandType.StoredProcedure
‘ Appel de la procédure
cmd.CommandText = " PS_ClientNom "
‘Ajouter les paramètres d’entrée et de sortie de la procédure
‘stockée à cmd en utilisant la propriété Parameters de
‘OleDbCommand ainsi que son type
Cmd.Parameters.Add (" @code ", OleDbType.Integer)
Cmd.Parameters.Add (" @Nom ", OleDbType. VarChar, 255)
Cmd.Parameters.Add (" @Prenom ", OleDbType. VarChar, 255)
Cmd.Parameters.Add (" @retour", OleDbType.Integer)
13
Utilisation d'une procédure stockée
avec des paramètres (II).
‘préciser la direction du paramètre
Cmd.Parameters ("@code" ).Direction =
ParameterDirection.Input
Cmd.Parameters ("@Nom" ).Direction =
Publicité
ParameterDirection.Output
Cmd.Parameters ("@ Prenom " ).Direction =
ParameterDirection.Output
Cmd.Parameters ("@retour" ).Direction =
ParameterDirection. ReturnValue
‘donner une valeur à @code. Conversion Str to Int avec val ()
Cmd.Parameters ("@code" ).Value= val(TextBox1.Text)
14
Utilisation d'une procédure stockée
avec des paramètres (II).
‘ Création du DataAdapter pour exécuter cmd
Dim Da As New OleDbDataAdapter(cmd)
‘mettre le résultat dans le dataset
Dim ds As New DataSet
Da.Fill(ds, " PS_ClientNom ")
'On veut récupérer le résultat de PS_ClientNom dans deux
‘textbox
TextBox2.Text = Cmd.Parameters ("@Nom" ).Value.ToString
TextBox3.Text = Cmd.Parameters("@Prenom" ).Value.ToString
15
Utilisation d'une procédure stockée
avec des paramètres (II).
Valeur inexistante
16
Utilisation d'une procédure stockée
avec des paramètres (II).
‘ Création du DataAdapter pour exécuter cmd
Dim Da As New OleDbDataAdapter(cmd)
‘mettre le résultat dans le dataset
Dim ds As New DataSet
Da.Fill(ds, " PS_ClientNom ")
'On veut récupérer le résultat de PS_ClientNom dans deux textbox
If (Cmd.Parameters ("@retour" ).Value = 1 then
TextBox2.Text = Cmd.Parameters ("@Nom" ).Value.ToString
TextBox3.Text = Cmd.Parameters("@Prenom" ).Value.ToString
Else
MsgBox(« N’existe pas », MsgBoxStyle.Exclamation, « Erreur »)
End If
17
Utilisation d'une procédure stockée
avec des paramètres (II).
18