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

C# Discussion :

"Nom de colonne non valide" Requête SQL C# WPF


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut "Nom de colonne non valide" Requête SQL C# WPF
    Bonjour,

    Je suis actuellement sur un petit projet et j'avance d'erreur en erreur ...

    Voila le Topo : J'ai une database avec une table => insee$
    dedans se trouvent
    - CP (code postal en clef primaire pour chaque commune)
    - Commune (le libellé de chaque commune)

    Dans mon programme j'ai une listbox (je travail en WPF) qui proposent toutes les commune (j'ai donc requêté ma database ici et ça marche)
    Une foi la Commune sélectionnée je peux cliquer sur un bouton pour afficher le CP de celle ci.

    C'est là que ça se corse. Je recupere le nom de la commune avec un textblock et ça marche puis je fais ma requete, string sql telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT CP FROM insee$ WHERE Commune = " + textBlock1.Text;
    Pour vérifié que la requête soir bonne je fais un affichage de celle ci juste après, ce qui me donne :
    SELECT CP FROM insee$ WHERE Commune = PARIS
    donc ça parait bon jusque là mais ...

    quand la requête s'exécute il y a l'erreur :
    Nom de colonne non valide : 'PARIS'.
    Je ne comprend pas d'où ça vient ...

    Voila mon code ci-dessous pour plus de compréhension (la partie intéressante).
    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 void button1_Click(object sender, RoutedEventArgs e)
            {
                if (listBox1.SelectedValue == null)
                    return ;
                sql = "SELECT CP FROM insee$ WHERE Commune = " + textBlock1.Text;
                DataSet dtSet2 = new DataSet();
                using (cn = new SqlConnection(connectionString))
                {
                    command = new SqlCommand(sql, cn);
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    cn.Open();
                    adapter.SelectCommand = command;
                    adapter.Fill(dtSet2); //ça plante ici
                    //textBlock2.DataContext = dtSet2;
                    cn.Close();
                }
    L'aide Visual Studio me dit que ça peut venir des double cote je pense pas que ça vient de là j'ai testé d'autre requete avec :
    sql = "SELECT machin FROM " + MaColonne;
    et ça marche parfaitement ...

    Merci pour les coups de mains à venir.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    A priori en langage SQL après = , il faut mettre des ': soit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT CP FROM insee WHERE commune ='"+ textBlock.text +"';"
    Je te conseille, pour comprendre les erreurs SQl, si tu as MySql par exemple, de déboguer ton programme, et pour la réquète qui pose problème de la tester dans MySql; tu auras des infos sur l'endroit ou ta requète n'est pas conforme au language SQL.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par davjan Voir le message
    Je te conseille, pour comprendre les erreurs SQl, si tu as MySql par exemple
    Et comment attaquerait il MySql avec des objets ADO.Net spécialisés SqlServer ? (SqlConnection, SqlAdapter). Ici il est manifeste qu'il utilise SqlServer.

    Au demeurant son problème vient bien des doubles quotes, du fait que (une fois de plus) il fait ses requêtes sans utiliser les paramètres (mais comme on repête d'utiliser les requêtes paramétrées guère plus de dix fois par jour sur ce forum, le message a peut être du mal à passer )

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Merci c'est bien ça

    Mais le fait est que l'aide donné sur msdn n'est pas toujours aussi facile à comprendre (elle n'est peut-être pas toujours bien expliquée ).
    Merci à vous (non je n'ai pas MySQL d'installé sur ce poste :/)

    Merci à vous

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par zouuc Voir le message
    Merci c'est bien ça

    Mais le fait est que l'aide donné sur msdn n'est pas toujours aussi facile à comprendre (elle n'est peut-être pas toujours bien expliquée ).
    Dans la FAQ C# du site, il y a un exemple très clair sur l'exécution d'une requête paramétrée :

    http://faqcsharp.developpez.com/?pag...onet_execparam

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    He bien merci

    Je vais aller y faire un tour

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

Discussions similaires

  1. IF EXISTS et nom de colonne non valide
    Par alex181 dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 27/08/2012, 08h53
  2. Nom de colonne non valide et pourtant correct
    Par YuanYevon dans le forum Développement
    Réponses: 4
    Dernier message: 01/06/2011, 11h25
  3. Réponses: 1
    Dernier message: 21/01/2011, 15h17
  4. Trigger INSERT : nom de colonne non valide
    Par arthuro45 dans le forum Développement
    Réponses: 6
    Dernier message: 13/09/2010, 21h58
  5. [SSIS] [2K5] : Nom de colonne non valide
    Par Adorien dans le forum SSIS
    Réponses: 0
    Dernier message: 13/05/2008, 16h37

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