Procedures stockées

Résolu
rewstyle Messages postés 10 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 6 mai 2011 - 3 mai 2011 à 00:08
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 4 mai 2011 à 14:33
Bonjour tout le monde.
ben voilà j'ai un problème d'appel d'une procédure stockée sous VB.Net 2010.
en fait j'ai écris le code dans une classe et après je fais l'appel de la classe dans le form web. et ça me dit toujours que les exceptions ne sont pas prises en considération. ben pour plus d'éclaircissement voici les codes.
la classe gestion_article

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient

Public Class Gestion_articles
Dim laye As SqlConnection
Dim sql As String
Dim conn As SqlConnection
Dim da As SqlDataAdapter
Dim cmd As SqlCommand
Dim Msg As String
Function Insert_art(ByVal n As Integer, ByVal design_art As String, _
ByVal piece As String, ByVal dat_acha As Date, ByVal duree As Integer, _
ByVal prix As Integer, ByVal cod_habit As String, _
ByVal nom_ctr As String) As String
Dim cnx As String = ConfigurationManager.ConnectionStrings("GeststockConnectionString").ConnectionString
conn = New SqlConnection(cnx)
'Paramètres pour stored procedure
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "sp_ajoutart"
cmd.Connection = conn
cmd.Parameters.Add(New SqlParameter("@n", SqlDbType.Int, 4, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, n))
cmd.Parameters.Add(New SqlParameter("@design_art", SqlDbType.VarChar, 30, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, design_art))
cmd.Parameters.Add(New SqlParameter("@piece", SqlDbType.VarChar, 30, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, piece))
cmd.Parameters.Add(New SqlParameter("@dat_acha", SqlDbType.DateTime, 10, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, dat_acha))
cmd.Parameters.Add(New SqlParameter("@duree", SqlDbType.Int, 4, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, duree))
cmd.Parameters.Add(New SqlParameter("@prix", SqlDbType.Money, 10, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, prix))
cmd.Parameters.Add(New SqlParameter("@cod_habit", SqlDbType.VarChar, 30, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, cod_habit))
cmd.Parameters.Add(New SqlParameter("@nom_ctr", SqlDbType.Char, 3, ParameterDirection.Input, False, 2, 0, "", DataRowVersion.Proposed, nom_ctr))
cmd.Parameters.Add(New SqlParameter("@Msg", SqlDbType.NVarChar, 2, ParameterDirection.Output, False, 2, 0, "", DataRowVersion.Proposed, ""))
Try
conn.Open()
cmd.ExecuteNonQuery()
Catch Exp As SqlException
cmd.Parameters("@Msg").Value = Exp.Message
End Try
Return cmd.Parameters("@Msg").Value.ToString
conn.Close()
conn.Dispose()
Return Msg
End Function

End Class
ainsi dans une autre page j'ecris ce code suivant pour faire l'appel
Imports Microsoft.VisualBasic
Partial Class Article
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim article As Gestion_articles
message.Text = article.Insert_art(n.Text, design.Text, piece.Text, achat.Text, duree.Text, prix.Text, code.Text, nom.Text)

End Sub
End Class
mais a chaque que je click ya les problèmes d'exception et donc je ne comprends pas ma faute aidez moi s'il vous palit

4 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 13:10
Salut,

con.Open() peut générer une exception du type InvalidOperationException, or tu ne catches que les sqlException. Ton erreur pourrait venir de là. Cette exception intervient lorsque :
- une connexion ne peut pas être ouverte sans spécifier un serveur ou une source de données (cnx n'est pas bon)
- OU, la connexion est déjà ouverte (il faut tester si con.IsOpen()).
Dans un premier temps tu peux remplacer cette ligne :

par celle-ci :

Tu pourras déjà voir si ta première (*) erreur vient bien de là

(*) première, car s'il s'agit d'une erreur sur exception non gérée, il faudra ensuite fixer le pb qui amène cette exception.
3
rewstyle Messages postés 10 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 6 mai 2011
4 mai 2011 à 14:02
ok merci et ca marche mnt. sinon merci pour tout
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 14:08
de rien ;)

note la réponse comme "acceptée" si elle te convient
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 14:33
ah ben bravo, j'ai écrit :
Dans un premier temps tu peux remplacer cette ligne :

par celle-ci :

^^

Je voulais mettre :
Dans un premier temps tu peux remplacer cette ligne :
Catch Exp As SqlException 

par celle-ci :
Catch Exp As Exception 
0
Rejoignez-nous