SqlDataSource & procédure stockée: retour d'un paramètre [Résolu]

Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
17 octobre 2008
- 21 févr. 2008 à 13:24 - Dernière réponse :
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
17 octobre 2008
- 22 févr. 2008 à 16:26
Bonjour à tous!

Dans le cadre de mon stage en ASP.NET & C#, je dois utiliser des procédures dans la base de donnée pour mon application. Je tente de faire quelque chose mais ça ne fonctionne pas (d'où la raison de mon message ... lol).

J'utilise une SqlDataSource (c'est vraiment pratique ce truc!) et je l'ai associée à une procédure stockée de ma base de donnée. Cette procédure retourne toujours une seule valeur (de type int) par exemple: 0 (qui veut dire OK), 1 (Pas OK), etc.

Ce que j'aimerai faire c'est lors d'un clic sur un bouton:
- excécuter cette procédure
- obtenir la valeur de retour de cette procédure
- mettre cette valeur dans une variable ou l'afficher dans un Label.

Voici un exemple de code simple (ma procédure n'a pas de paramètre à envoyer):
ASPX




    <form id="form1" runat="server">
   

       

       

        &nbsp;&nbsp;

       

        &nbsp;

        "
            SelectCommand="ma_procedure1" SelectCommandType="StoredProcedure">
    </form>



ASPX.CS


    protected void Essai2(object sender, EventArgs e)
    {

        ???????? Quoi mettre ????????










    }







Je ne sais pas quoi mettre dans l'évènement pour récupérer la valeur de ma procédure stockée à partir de cette datasource. Pourriez-vous me mettre sur le droit chemin

Un autre question:

Je sais qu'il y a moyen de réaliser ce que je veux faire directement en code C# mais ici j'ai choisi la facilité en usant des SqlDataSource. Je me demandais au niveau théorique quel est le meilleur moyen à utiliser? Est-ce que utiliser des SqlDataSources pour les procédures n'est pas un processus trop lourd?

Merci d'avance de bien vouloir m'éclairer. Bonne journée
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
346
Date d'inscription
jeudi 15 février 2007
Dernière intervention
24 avril 2010
- 21 févr. 2008 à 16:34
3
Merci
Bonjour, personnellement j'utilise le code c# au lieu du datasource, voila un bout de code qui manipule les procédures stockées et j'espère que ca va vous aidez :


 



strConnection = System.Configuration.




ConfigurationManager
.ConnectionStrings[

"NSConnectionString"
].ConnectionString; //nom de la chaine de connexioncn =


new



SqlConnection
(strConnection);


try

{


cn.Open();







string
nom_proc =

"Ajouter_PROFILE_ACCESS_RIGHT"
; // nom de la procédure stockée


SqlCommand
cm =

new



SqlCommand
(nom_proc, cn); //objet commandcm.CommandType =


CommandType
.StoredProcedure;


SqlParameter
parma1 = cm.Parameters.Add(

"@screen"
,

SqlDbType
.VarChar, 50); // déclaration des paramètres


SqlParameter
parma2 = cm.Parameters.Add(

"@profile_id"
,

SqlDbType
.Int);

parma1.Value = Profile_Screen_DropDownList.Text;

parma2.Value =

Convert.ToInt64(Profile_Shortname_DropDownList.SelectedValue);

cm.ExecuteNonQuery();// exécuter la procédure dans le cas où elle ne retourne rien

}

catch (
Exception E){

Profile_Label.Text = E.Message.ToString();

}

finally{

cn.Close();

cn.Dispose();

}

Merci mimosa803 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de mimosa803
Meilleure réponse
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Dernière intervention
1 décembre 2009
- 22 févr. 2008 à 10:17
3
Merci
Dans ton cas je te conseil plutot d'utliser ceci :



// te retourne la première valeur de la premiere ligne du jeux de résultat

// à utiliser dans le cas ou tu est sur que ta PS ne te retourne qu'une seule ligne.

Label.Text = (

string
)cm.ExecuteScalar();




// dans le cas où  tu as plusieur ligne au niveau du jeu de résultat, tu devra passer par un DataReader.





SqlDataReader
dr;
dr = cm.ExecuteReader();


while
(dr.Read())
{


         // traitement

}
dr.Close();


Ps: je pense que que tu devrais tout gerer manellement, tu en apprendrais beaucoup plus.

Merci lassaad83 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de lassaad83
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
17 octobre 2008
- 21 févr. 2008 à 13:30
0
Merci
Purée je me suis carrement trompé de site ou poser cette question. Excusez-moi ^^ Mais bon C# et ASP.NET même combat.
Commenter la réponse de Max207
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
17 octobre 2008
- 22 févr. 2008 à 16:26
0
Merci
Merci pour vos réponses, je vais tenter de me débrouiller avec ça
Commenter la réponse de Max207

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.