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

Max207 19 Messages postés vendredi 23 juillet 2004Date d'inscription 17 octobre 2008 Dernière intervention - 21 févr. 2008 à 13:24 - Dernière réponse : Max207 19 Messages postés vendredi 23 juillet 2004Date d'inscription 17 octobre 2008 Dernière intervention
- 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

mimosa803 346 Messages postés jeudi 15 février 2007Date d'inscription 24 avril 2010 Dernière intervention - 21 févr. 2008 à 16:34
+3
Utile
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();

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mimosa803
lassaad83 148 Messages postés vendredi 28 avril 2006Date d'inscription 1 décembre 2009 Dernière intervention - 22 févr. 2008 à 10:17
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lassaad83
Max207 19 Messages postés vendredi 23 juillet 2004Date d'inscription 17 octobre 2008 Dernière intervention - 21 févr. 2008 à 13:30
0
Utile
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
Max207 19 Messages postés vendredi 23 juillet 2004Date d'inscription 17 octobre 2008 Dernière intervention - 22 févr. 2008 à 16:26
0
Utile
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.