Concatenation sous C#

Signaler
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour,
Voici une requête que j'ai écrite, et que je souhaiterais améliorer:
            string sRechercheSQL = "SELECT Moyennes.code_eleve, Eleves.nom_eleve, Eleves.prenom_eleve," + "\n" +
            "Matieres.matiere, Moyennes.moyenne, Moyennes.coefficient" + "\n" +
            "FROM Eleves, Moyennes_Trimestres, Moyennes, Annees_Scolaires, Classes, Trimestres, Matieres" + "\n" +
            "WHERE Moyennes_Trimestres.code_eleve = Moyennes.code_eleve AND Moyennes.code_annee = Annees_Scolaires.code_annee AND" + "\n" +
            "Moyennes.code_classe = Classes.code_classe AND Moyennes.code_trimestre = Trimestres.code_trimestre AND" + "\n" +
            "Eleves.code_eleve = Moyennes_Trimestres.code_eleve AND Moyennes.code_matiere = Matieres.code_matiere" + "\n" +
            "AND Classes.classe = '" + this.cboClasse.Text + "'" + "\n" +
            "AND Annees_Scolaires.annee= '" + this.cboAnneeScolaire.Text + "'" + "\n" +
            "AND Trimestres.trimestre = '" + this.cboTrimestre.Text + "'" + "\n" +
            "ORDER BY Moyennes_Trimestres.moyenne DESC, Eleves.nom_eleve, Eleves.prenom_eleve, Matieres.classement";


Je souhaiterais pouvoir concatener Eleves.nom_eleve et Eleves.prenom_eleve pour donner nom_etudiant.
Si quelqu'un peu m'aider. Merci à tous.

6 réponses

Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Hello,

Essaye
SELECT Eleves.prenom_eleve + " " + Eleves.nom_eleve as nom_etudiant 
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016

Merci Moundir76, mais saches que sous C#, ta proposition ne fonctionne pas. Je l'avais déjà essayé.
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

En quoi ça ne fonctionnerai pas sous C# ? c'est a cause du LinqToSQL ?
Je n'ai fait des requêtes SQL en VB, mais pour le coup ce langage est bien du SQL et non du C# ?
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
car tu as à fais un oublie / une phaute:


SELECT concat(Eleves.prenom_eleve , ' ' , Eleves.nom_eleve) as nom_etudiant


ce n'est pas un traitement de string comme en c#qu'il faut,mais une concaténation sql.
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

J'ai testé
SELECT Eleves.prenom_eleve + " " + Eleves.nom_eleve as nom_etudiant


Sous SQL Server et cela fonctionne très bien. Idem quand j'utilise une SqlCommand depuis VB.NET. C'est sur c'est peut être un peu "bidouille" comme méthode par rapport au CONCAT()....
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
c'est possible, il faudrai creuser pour voir ^^ (c'est peu être aussi une version qui l'accepte).
Ca ne fonctionne pas en MySql en tout cas, cet idiot essaye d'additionner des entiers (et récupère 0 -_-').

en regardant :
http://technet.microsoft.com/fr-fr/library/ms174042.aspx

c'est une spécificitée sqlserver mais ils ne précisent pas depuis quelle version ... (et d'ailleurs je ne sais pas quelle base de données il utilise dans son connecteur =p)
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

C'est exact :)

En tout cas je ne connaissais pas la fonction CONCAT(). Ca me permettra de l'utiliser maintenant !

A+
Messages postés
14584
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 août 2020
426
Bonsoir,

je ne connais pas suffisamment les requêtes sql pour te donner une solution directe.

As tu essayé de charger tes données avec linq dans des collections de "var"?
Dans un second temps (ou tout d'un coup si ça se trouve), tu pourras extraire tes étudiants.

J'ai un exemple avec du xml ici
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016

Même sous Access cette requête sous cette forme fonctionne parfaitement, mais je ne comprends pas qu'elle ne fonctionne pas sous C#. encore merci pour votre aide
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Bonjour,

En même temps, c'est très moche de concaténer des chaines de caractères pour construire des requêtes SQL : vous prenez le risque d'avoir des tentatives d'injection.

L'idéal est d'utilisé les requêtes parametrées d'ado.net : http://codes-sources.commentcamarche.net/faq/709-utilisation-des-requetes-parametrees-avec-ado-net-2-0
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016

Merci à toi sebnafate, je souhaiterais que me montre comment faire, car je suis un débutant en C#. Merci pour ton aide
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Il suffit tout simplement de lire et de suivre le tuto que j'ai partagé :
http://codes-sources.commentcamarche.net/faq/709-utilisation-des-requetes-parametrees-avec-ado-net-2-0