Concatenation sous C#

Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
- - Dernière réponse : sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
- 6 sept. 2013 à 09:30
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.
Afficher la suite 

6 réponses

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

Essaye
SELECT Eleves.prenom_eleve + " " + Eleves.nom_eleve as nom_etudiant 
Commenter la réponse de Moundir76
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
0
Merci
Merci Moundir76, mais saches que sous C#, ta proposition ne fonctionne pas. Je l'avais déjà essayé.
Moundir76
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# ?
nagaD.scar
Messages postés
4265
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.
Moundir76
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()....
nagaD.scar
Messages postés
4265
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)
Moundir76
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+
Commenter la réponse de warzet
Messages postés
13963
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 novembre 2019
319
0
Merci
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
Commenter la réponse de Whismeril
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
0
Merci
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
Commenter la réponse de warzet
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
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
Commenter la réponse de sebmafate
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
0
Merci
Merci à toi sebnafate, je souhaiterais que me montre comment faire, car je suis un débutant en C#. Merci pour ton aide
sebmafate
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
Commenter la réponse de warzet