Concatenation sous C#

warzet Messages postés 44 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 1 novembre 2016 - 26 août 2013 à 09:28
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre 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.
A voir également:

6 réponses

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
Modifié par Moundir76 le 26/08/2013 à 10:03
Hello,

Essaye
SELECT Eleves.prenom_eleve + " " + Eleves.nom_eleve as nom_etudiant 
0
warzet Messages postés 44 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 1 novembre 2016
26 août 2013 à 17:10
Merci Moundir76, mais saches que sous C#, ta proposition ne fonctionne pas. Je l'avais déjà essayé.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
27 août 2013 à 08:19
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# ?
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
Modifié par nagashima le 27/08/2013 à 11:13
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.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
27 août 2013 à 11:22
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()....
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
Modifié par nagashima le 27/08/2013 à 11:26
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)
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
27 août 2013 à 11:31
C'est exact :)

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

A+
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
26 août 2013 à 19:51
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
0
warzet Messages postés 44 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 1 novembre 2016
27 août 2013 à 11:43
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
4 sept. 2013 à 09:15
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
0
warzet Messages postés 44 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 1 novembre 2016
6 sept. 2013 à 09:18
Merci à toi sebnafate, je souhaiterais que me montre comment faire, car je suis un débutant en C#. Merci pour ton aide
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
6 sept. 2013 à 09:30
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
0
Rejoignez-nous