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.

6 réponses

Moundir76
Messages postés
286
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
286
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
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
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
286
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
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
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
286
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
17640
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
7 août 2022
612
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
38
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
38
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