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

Signaler
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
17 octobre 2008
-
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
17 octobre 2008
-
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

4 réponses

Messages postés
346
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

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();

}
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

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.
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
17 octobre 2008

Purée je me suis carrement trompé de site ou poser cette question. Excusez-moi ^^ Mais bon C# et ASP.NET même combat.
Messages postés
19
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
17 octobre 2008

Merci pour vos réponses, je vais tenter de me débrouiller avec ça