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 :

accès aux champs d'une requête SELECT


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut accès aux champs d'une requête SELECT
    Bonjour,

    J'ai une requête qui lie 4 tables avec environ 60 champs. COmme je ne veux pas devoir écrire tous les champs dans ma requête, j'ai utilisé simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblResult.*, tblResultSession.*, tblResultSessionLap.*, tblResultSessionLapDetail.*, tblResultSession.idsOracleResultSession
    FROM ((tblResult INNER JOIN tblResultSession ON tblResult.idsResult = tblResultSession.idsResult) INNER JOIN tblResultSessionLap ON tblResultSession.idsResultSession = tblResultSessionLap.idsResultSession) INNER JOIN tblResultSessionLapDetail ON tblResultSessionLap.idsResultSessionLap = tblResultSessionLapDetail.idsResultSessionLap
    WHERE (((tblResultSession.idsOracleResultSession)<>0));
    Le problème vient ensuite. Lorsque je j'essaie d'accéder à un champ en particulier, je ne peux tout simplment pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Dictionary<String, Object> parameterList = new Dictionary<String, Object>(); //parameterList = new Dictionnary<Object>()
                         parameterList["tblResultSession.idsResultSession]"] = reader["idsResultSession"];
                         parameterList["tblResultSession.idsResult"] = reader["idsResult"];
                         parameterList["tblResultSession.idsTEConfiguration"] = reader["idsTEConfiguration"];
                         parameterList["tblResultSession.dtmInstallation"] = reader["dtmInstallation"];
                         parameterList["tblResultSession.dtmTestStart"] = reader["dtmTestStart"];
                         parameterList["tblResultSession.dtmTestEnd"] = reader["dtmTestEnd"];
                         parameterList["tblResultSession.strTestEnvCRC"] = reader["strTestEnvCRC"];
                         parameterList["tblResultSession.strOperatorID"] = reader["strOperatorID"];
    Existe-il un moyen de garder la requête la plus courte possible tout en étant capable d'accéder aux champs? Je ne veux pas devoir écrire les 60 champs dans ma requête SELECT.

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Ce n'est pas parce que tu met "*" que tu ne peux pas accéder à ton champs en particulier après.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    tu pourrais nous mettre le message d'erreur et la ligne qui passe en erreur, ca serait déjà un bon début !

    si 2 tables ont une colonne de même nom, reader["nom colonne"] ne doit pouvoir trouver laquelle c'est

  4. #4
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    déjà, si tu as besoins de remonter tous ces champs d'un coup, il doit y avoir un problème de conception. Peut-être devrais-tu découper tes objets. Enfin, ne connaissant pas le besoin c'est difficile d'en être certains.

    Ensuite quitte a employer * autant ne pas se prendre la tête avec [table].*...

    enfin, on attends les précisions pour mieux t'aider.

  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 : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par asmduty Voir le message
    Ce n'est pas parce que tu met "*" que tu ne peux pas accéder à ton champs en particulier après.
    En effet, même si utiliser le * est une manière de programmer absolument dégueulasse (il faut le souligner).

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kheironn Voir le message
    Ensuite qui a employer * autant ne pas se prendre la tête avec [table].*...
    Avec les jointure, si, ou du moins c'est probable; sinon tu as une erreur sur ambiguité des noms de champs(si tes champs clefs externes ont le même nom que les champs référencés, ce qui n'est pas illogique comme convention de nommage).

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par acheo Voir le message
    Existe-il un moyen de garder la requête la plus courte possible tout en étant capable d'accéder aux champs? Je ne veux pas devoir écrire les 60 champs dans ma requête SELECT.
    La phrase me laisse perplexe : de toute manière, tes 60 champs, il va bien falloir que tu les identifies pour les exploiter.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Avec les jointure, si, ou du moins c'est probable; sinon tu as une erreur sur ambiguité des noms de champs(si tes champs clefs externes ont le même nom que les champs référencés, ce qui n'est pas illogique comme convention de nommage).
    select * from ne peut pas planter avec des jointures, les noms de colonnes peuvent être identiques (du moins sur sql server)
    c'est après côté c# que c'est moins drôle

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    select * from ne peut pas planter avec des jointures, les noms de colonnes peuvent être identiques (du moins sur sql server)
    Il y a des cas plus problématiques avec Oracle dans ce cas.

Discussions similaires

  1. [MySQL] Donner un autre nom de champ lors d'une requête SELECT
    Par greg13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/01/2008, 17h30
  2. Réponses: 4
    Dernier message: 09/01/2008, 20h10
  3. [VBA-A]Acces aux données d'une requête Access
    Par Yanmeunier dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/02/2006, 12h21
  4. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02
  5. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59

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