Asp.net - exécuter une procédure stockée avec passage de paramètres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 31 086 fois - Téléchargée 27 fois

Contenu du snippet

A partir de cette source, il était intéressant de la compléter afin de permettre l'utilisation des Procédures Stockées qui nécessite un passage de paramètres dans l'utilisation.
- http://www.aspfr.com/code.aspx?ID=8953

Voici donc deux exemple, une en mode Insert/Update et l'autre en mode Select.

Source / Exemple :


' Deux exemples pour une utilisation des Procédure Stockées avec paramètres

' -------------------------------------------------------------------------
Public Function ExecuteNonQueryProcStock(ByVal MachaineDeConnexion As String, ByVal MonInteger As Integer, ByVal MaDate As DateTime, ByVal MonTexte As String) as Integer
' Exécution d'une Procédure Stockée de type Insertion ou Update

Dim Maconnexion As SqlConnection = New SqlConnection(MachaineDeConnexion)
Dim MonResultat As Integer = -1
Dim MaCommande As New SqlCommand()

MaCommande = New SqlCommand("MaProcStockExecute", Maconnexion)
MaCommande.CommandType = CommandType.StoredProcedure

' Déclaration pour mon premier paramètre de ma Proc stock en Int
Dim ParamInteger As SqlParameter = MaCommande.Parameters.Add("@MonIntProcStock", SqlDbType.Int)
ParamInteger.Value = MonInteger

' Déclaration pour mon second paramètre de ma Proc stock en DateTime
Dim ParamDateTime As SqlParameter = MaCommande.Parameters.Add("@MaDateProcStock", SqlDbType.DateTime)
ParamDateTime.Value = MaDate

' Déclaration pour mon second paramètre de ma Proc stock en NVarChar (2000 char)
Dim ParamNVarChar As SqlParameter = MaCommande.Parameters.Add("@MonTextProcStock", SqlDbType.NVarChar, 2000)
ParamNVarChar.Value = MonTexte

Try
 Maconnexion.Open()
 MonResultat = MaCommande.ExecuteNonQuery
Finally
 If Not (Maconnexion Is Nothing) Then Maconnexion.Close()
End Try

' On récupère une valeur qui indique si la procédure stockée s'est bien déroulée.
Return MonResultat

End Function

' -------------------------------------------------------------------------
Public Function RecupDataSetProcStock(ByVal MachaineDeConnexion As String, ByVal MonInteger As Integer, ByVal MaDate As DateTime, ByVal MonTexte As String) As Dataset
' Exécution d'une Procédure Stockée de type Sélection

Dim Maconnexion As SqlConnection = New SqlConnection(MachaineDeConnexion)
Dim MaCommande As New SqlCommand()

MaCommande = New SqlCommand("MaProcStockRenvoieDataSet", Maconnexion)
MaCommande.CommandType = CommandType.StoredProcedure

Dim MonAdapter As SqlDataAdapter = New SqlDataAdapter()
MonAdapter.SelectCommand = MaCommande

' Déclaration pour mon premier paramètre de ma Proc stock en Int
Dim ParamInteger As SqlParameter = MaCommande.Parameters.Add("@MonIntProcStock", SqlDbType.Int)
ParamInteger.Value = MonInteger

' Déclaration pour mon second paramètre de ma Proc stock en DateTime
Dim ParamDateTime As SqlParameter = MaCommande.Parameters.Add("@MaDateProcStock", SqlDbType.DateTime)
ParamDateTime.Value = MaDate

' Déclaration pour mon second paramètre de ma Proc stock en NVarChar (2000 char)
Dim ParamNVarChar As SqlParameter = MaCommande.Parameters.Add("@MonTextProcStock", SqlDbType.NVarChar, 2000)
ParamNVarChar.Value = MonTexte

Dim MonResultat As New DataSet()

Try
 Maconnexion.Open()
 MonAdapter.Fill(MonResultat)
Finally
 If Not (Maconnexion Is Nothing) Then Maconnexion.Close()
End Try

' On récupère le DataSet avec comme premier DataTable le résultat du SELECT
Return MonResultat

End Function

' -------------------------------------------------------------------------

Conclusion :


Bon Coding.

Romelard Fabrice (Alias F___)

A voir également

Ajouter un commentaire

Commentaires

cs_Domilo
Messages postés
32
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
22 février 2005
-
Bonjour,

Pour ceux qui trouvent que cela fait trop de code à frapper,

Le code :
Dim ParamNVarChar As SqlParameter = MaCommande.Parameters.Add("@MonTextProcStock", SqlDbType.NVarChar, 2000)
ParamNVarChar.Value = MonTexte

Comme la variable ParamNVarChar n'est pas utilisé dans la suite du code, on peut éviter de la déclarer :
MaCommande.Parameters.Add("@MonTextProcStock", SqlDbType.NVarChar, 2000).Value = MonTexte

Et même :
MaCommande.Parameters.Add("@MonTextProcStock", MonTexte)

Pour ce dernier cas ce sera un VarChar très grand (4000?) qui sera passé au serveur si le paramètre est du type string.
Sont également accepté les Numérique, date,..., mais on ne maitrise pas le typage qui sera choisit (en générale ce n'est pas grave)

@Bientôt...
cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Merci pour cette information, elle servira à un grand nombre je pense.

F___
cs_New_World
Messages postés
53
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
15 juillet 2010
-
salut

vos code sont parfait et logique mais le probleme jcroi que c de moi parce que a la place de "Montexte" j essaye de mettre un textbox pr pouvoir passer la variable a la procedure mais quan je debogue et j ecri mes donné au textbox seulment le premier lettre qui s'enregistre a la base de donne par exemple si jfai entrer "toto" il ya que le 't' qui s'enregistre a la base
bon voila
MaCommande.Parameters.Add("@MonTextProcStock", MonTexte)
a la place du "MonTexte" j utilise un textbox
merci de biiiien
en fait j aie le mm prob si j ecri Montexte
et mercii encore
cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Bonjour,

Vous avez mal lu et appliqué l'exemple, vous devez utiliser ceci :
- MaCommande.Parameters.Add("@MonTextProcStock", MonTexte, xxxxx)

xxxxx étant la taille de votre champ varchar, dans la base de données.

Cordialemment

Romelard Fabrice
cs_New_World
Messages postés
53
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
15 juillet 2010
-
bonjour
c pa ça le probleme parce que j'ai deja montionner la taille du champ voila ma ligne :
com.Parameters.Add("@Nm",SqlDbType.NVarChar,50,"nom").Value=textbox.Text;
:::mon prob c que k il ya que la 1ere lettre de ma variable qui s enregistre :oui j ai aussi mis a la place de 50 ,4000 encore le mm prob parce ke ça peu que tu pense que c a cause de ça

et j ai aussi essayer ça mai c un autre prob parce que la il me di que c impossible de convertir de 'string' en 'System.Data.SqlDbType'
com.Parameters.Add("@Nm","MonTexte",50,"nom");

et merciiiiiiiiiiii

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.