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

VB.NET Discussion :

Requête MySql sur VB


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut Requête MySql sur VB
    bonjour à tous

    voilà j'ai un problème qui consiste à vouloir récuperer le résultat d'une requête MySql ; je veux récuperer de ma BD le 'nom_util' de ma table 'personnel' mais son résultat voilà le code :

    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
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            conn = New MySqlConnection
            conn.ConnectionString = hote
            req = "select nom_util from personnel where nom_util= '" & txtnu.Text & "'"
            verif = New MySqlCommand(req)
            verif.Connection = conn
            Try
                conn.Open()
                nu = verif.ExecuteNonQuery()
    ' ce message est pour vérifier le résultat de la requête
                MessageBox.Show(nu, "résultat", MessageBoxButtons.OK, MessageBoxIcon.Information) 
            Catch ex As Exception
                MessageBox.Show(ex.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
     
            End Try
            conn.Close()
        End Sub
    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    Bonjour

    euh tu veux récupérer un champ qui a la même valeur que ta textbox? c'est pas un peu "inutile"?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select nom_util from personnel where nom_util= '" & txtnu.Text & "'"

    Nasty

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Vraiment
    alors que doit je faire ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    ah je m'attendais pas a ca comme réponse!

    Il faut peut être revoir ta requête...

    Nasty

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    bon l'idée c qu'il faut vérifier que le 'nom_util' existe dans la table personnel c ça et je ne vois pas comment le faire sans requête "select" .

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    ah ok, désolé j'avais pas vu que c'était pour vérifier que la personne existait dans la base de données...
    Bah ca marche alors? ou ca bloque quelque part?

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Mais le pblème c qu'il ne marche pas; le messagebox que j'ai crée pour vérifier le résulatat m'affiche tjs "-1"
    vraiment je ne sais pas pourquoi ?

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    Ok donc c'est peut etre ta requete qui est fausse!

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            conn = New MySqlConnection
            conn.ConnectionString = hote
            req = "select nom_util from personnel where nom_util= '" & txtnu.Text & "'"
    inputbox("requete","requete", req) 'ca te permettra de récupérer ta requête et de la tester dans ton editeur de requete. 
            verif = New MySqlCommand(req)
            verif.Connection = conn
            Try
                conn.Open()
                nu = verif.ExecuteNonQuery()
    ' ce message est pour vérifier le résultat de la requête
                MessageBox.Show(nu, "résultat", MessageBoxButtons.OK, MessageBoxIcon.Information) 
            Catch ex As Exception
                MessageBox.Show(ex.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
     
            End Try
            conn.Close()
        End Sub
    Teste ta requête toute seule, et en fonction du résultat tu devrais voir ou ca plante

    Nasty

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Evidament la requête marche et 'txtnu' est remplacé par la valeur voulu mais tjs le résultat retourné est erroné
    est ce qu'il faut mettre des caractères spéciaux pour les chaines de caractères ?

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    La valeur est erronée quand tu teste la requête dans l'éditeur?
    Pour les chaines de caractères les cotes suffisent je crois. mais tu peux essayer avec des doubles cotes

    Nasty

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Rien à faire tjs le même problème vraiment je ne comprend pas pourquoi

  12. #12
    Membre très actif Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Par défaut
    Est ce que ton objet "nu" n'attend pas une propriété du style "Field" pour renvoyer le champs demandé ?

    Je n'ai pas le pilote ODBC pour mySQL sur mon poste, impossible de verifier

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    a mon avis tu n'es pas connecté à la base de données, vérifie ta chaine de connection mais c'est quoi ce hote???

  14. #14
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    selon MSDN la méthode executenonquery retourne le nombre d'enregistrements affectés par une requete insert update ou delete, n'importe quel autre requête retourne -1
    Pour les instructions UPDATE, INSERT et DELETE, les valeurs de retour représentent le nombre de lignes affectées par la commande. Pour tous les autres types d'instructions, la valeur de retour est -1. En cas d'annulation, la valeur de retour est la même -1.
    pour une requete select utiliser la méthode executescalar ou executereader

    je te propose la solution :
    - une requête du style "SELECT count(*) from ...."
    - récupère la valeur avec executescalar


    ps: je te conseil fortement d'utiliser la collection parameters pour ajouter des parametres à ta commande au lieu de la concaténation

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Par défaut
    Sinon y'a une autre méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select
    cast(case when exists(select FactureID from HONORAIRE where Facture=@Facture)
    then 1
    else 0
    end as bit) FactureExiste
    ou la variante procédure stockée (SQL Server) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create procedure ExisteFacture(@Facture varchar(10))
    as
    return case when exists(select FactureID from HONORAIRE where Facture=@Facture) then 1 else 0 end
     
    declare @ret bit
     
    exec @ret=ExisteFacture '0001'

  16. #16
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    oui oui oui oui oui c'est vrai c absolument ca
    châpeau l'ami c ca il suffit de remplacer "ExecutNonQuery " par "ExecuteScalar"

    voilà et merci encore

  17. #17
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    sans probleme, mais rappel toi ce que j'ai dis :
    je te conseil fortement d'utiliser la collection parameters pour ajouter des parametres à ta commande au lieu de la concaténation

  18. #18
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Que veux tu dire par çelà

  19. #19
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    je m'excuse pour la réponse tardive :

    la collection parameters pour les objets command est à utilisée si ta commande est paramétrée au lieu de faire des concaténations qui ne sont ni confortables ni sécurisées . Remplacer ton code par quelque chose du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    req = "select nom_util from personnel where nom_util= @nom_util"
     
            verif = New MySqlCommand(req)
            verif.Parameters.Add(New MySqlParameter("@nom_util", MySqlDbType.VarChar, 50)) '50 est la taille de ton champs nom_util
            verif.Parameters("@nom_util").Value = txtnu.Text
            verif.Connection = conn
    ...

  20. #20
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Par défaut
    Ok j'ai compris meri pour le conseil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête MySql sur champ contenant des virgules
    Par Invité2 dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2011, 13h49
  2. Requête MySQL sur des dates
    Par amazon dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/09/2009, 09h30
  3. Ma requête Mysql sur trois tables plante easyphp
    Par sinifer dans le forum Requêtes
    Réponses: 8
    Dernier message: 29/04/2009, 16h37
  4. [MySQL] requête mysql sur un formulaire
    Par brunochp dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 19/03/2009, 22h57
  5. requête mysql sur serveur wamp en local !
    Par sebalab dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 19/04/2007, 19h18

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