IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Appeler procédure stockée mysql


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut Appeler procédure stockée mysql
    Bonjour,

    je ne sais pas si je suis dans le bon département du forum pour ma requête. J'essaie d'appeler une procédure stockée depuis le code behind. Ma procédure stocké s'apelle prc_login et possède deux paramètres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PROCEDURE `prc_login`(par_usernom varchar(50), par_password varchar(50))
    BEGIN
    	SELECT id_user, `username`, `password` FROM web_users WHERE username=par_usernom AND `password`=par_password;
     
        END$$
    Voici mon code c# qui tente de parler avec cette procédure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     command = new MySQLCommand("prc_login", connection);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add("par_usernom", DbType.String);
                command.Parameters.Add("par_password", DbType.String);
                command.Parameters["par_usernom"].Value = username;
                command.Parameters["par_password"].Value = password;
                connection.Open();
                reader = command.ExecuteReaderEx(); //mon erreur survient à cette ligne
    Je reçois comme erreur que j'ai une faute de syntaxe dans ma requete sql.....
    Bref un peu perdu


    Merci d'avance
    Gabriel Deschênes

  2. #2
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    SELECT id_user, `username`, `password` FROM web_users WHERE username=par_usernom AND `password`=par_password;
    essaie ca (c'est plus ou moins du sql mais avec mysql je ne sais pas si ca fonctionne; En SQL, les parametres sont précédés de @ mais comme c'est ici du mysql je n'en ai pas mis; en revanche, je pense que ce sont les quotes qui posent pb):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id_user, [username], [password] FROM web_users WHERE [username] like par_usernom AND [password] like par_password;
    bye
    Nico

  3. #3
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Par défaut
    j'yrais plus pour une ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT id_user, username, password FROM web_users WHERE username = @par_usernom AND password  = @par_password;

  4. #4
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Citation Envoyé par longuard Voir le message
    j'yrais plus pour une ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT id_user, username, password FROM web_users WHERE username = @par_usernom AND password  @par_password;
    allez, on va y arriver au SQL classique...
    les [] sont dus au fait que je ne sais pas si username et password ne sont pas des mots clés en (My)SQL; du coup mettre des crochets fait en sorte de spécifier qu'il s'agit de noms de colonnes. Entre "LIKE" et "=", la différence est sur le fait d'etre ou non case sensitive. Par ailleurs, longuard, c'est du détail mais il te manque un egal, ce qui donnera au final (ici en mode case sensitive) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id_user, username, password FROM web_users WHERE username = @par_usernom AND password = @par_password;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut
    Parfait, je teste ce code ce soir et je vous redonne des nouvelles.



    Gabriel Deschênes

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu n'oublieras pas de protéger ton code contre les injections SQL...

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut
    Bon, je ne sais plus quoi essayer, je suis peut-être un peu fatigué, mais je ne vois pas ou mon erreur pourrait se trouver. Mon but ultime est d'avoir un indicateur provenant de ma procédure qui me dit si la combinaison du username et password passée existe dans la base de données.

    Voici le code(assez simple) de ma procédure stockée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELIMITER $$
    CREATE
        PROCEDURE `qbc`.`prc_login`(in param_username varchar(50), in param_password varchar(50), out param_chek varchar(50))
        BEGIN
    	SET param_chek = (SELECT username FROM web_users WHERE username=param_username AND `password`=param_password);
        END$$
    DELIMITER ;
    Voici mon code c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     command = new MySQLCommand("prc_login", connection);
                command.CommandType = CommandType.StoredProcedure;
     
                command.Parameters.Add("param_username", DbType.String);
                command.Parameters["param_username"].Direction = ParameterDirection.Input;
                command.Parameters["param_username"].Value = username;
     
                command.Parameters.Add("param_password", DbType.String);
                command.Parameters["param_password"].Direction = ParameterDirection.Input;
                command.Parameters["param_password"].Value = password;
     
                command.Parameters.Add("param_chek", DbType.String);
                command.Parameters["param_chek"].Direction = ParameterDirection.Output;
     
     
                connection.Open();
                reader = command.ExecuteReaderEx();
    Voici l'erreur générée par mon code:

    MySQLDriverCS Exception: MySQLDriverCS Error: wrong query.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prc_login' at line 1
    Bon j'espère que c'est clair, pourtant à l'école j'ai fais le même type d'exercices d'appeler des procédures avec paramètres, mais avec une base SQL....

    Merci
    Gabriel Deschênes

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    On est pas beaucoup à faire de l'ASP.Net sur du MySql.

    Est-ce que tu te connecte correctement (http://dotnet.developpez.com/faq/asp...ysqlviadrivers)? Peux-tu faire un "Select"?
    Est-ce que ta procédure stockée est bonne? L'as-tu testée en dehors de Visual Studio ou du programme que tu créés?
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut
    oui avec SQLYOG et si je lui passe les bons paramètres, je reçois des résultats...

  10. #10
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Par défaut
    voici un post qui explique bien comment apeler une stored proc en c# j'esperque ca peux d'aider
    http://www.codeproject.com/KB/databa...Procedure.aspx

  11. #11
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    je pense que le systeme n'arrive [peut-etre] pas à assigner une colonne entiere à
    une seule valeur, car un SELECT renvoit un ensemble de valeurs, alors que SET est pour une seule valeur je crois, donc il te renvoit une erreur. Essaie de virer ton PARAM_CHECK et de mettre plutot qqch comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (SELECT Count(username) FROM web_users WHERE username=param_username AND `password`=param_password);
    et dans ton code c# tu fais qqch comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    connection.Open();
    reader = command.ExecuteReaderEx();
    while(reader.Read())
    {
         //on récupere le nombre d'entrées
         if(reader[0]!=null && Convert.ToInt32(reader[0].ToString())>0)
         {
             //appelle ici la fonction que tu veux executer
             //car il a trouvé au moins un enregistrement qui correspond
             //à ta demande 
         }
    }
    ca devrait marcher mieux... enfin j'espere... mais comme j'ai fait ca de tête, il y a peut-etre des erreurs de casse (majuscules/minuscules)

    bye
    Nico

Discussions similaires

  1. [MySQL] PHP.PDO Appel d’une procédure stockée MYSQL avec arguments IN, OUT et INOUT
    Par Depite dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/03/2015, 10h20
  2. Appel de procédure stockée Mysql
    Par Gregory.M dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/05/2009, 19h30
  3. Appeler Procédure stockée depuis ACCESS
    Par Sunny dans le forum Access
    Réponses: 2
    Dernier message: 13/09/2005, 22h07
  4. [PL/SQL] Appel procédure stockée dans trigger
    Par Félia dans le forum Oracle
    Réponses: 3
    Dernier message: 24/01/2005, 17h25
  5. Procédures stockées MySQL
    Par super dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/04/2004, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo