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

Accès aux données Discussion :

Retourner un object suite à une requête select


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant / Technicien informatique
    Inscrit en
    Novembre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant / Technicien informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 30
    Points : 27
    Points
    27
    Par défaut Retourner un object suite à une requête select
    Bonjour à tous, je suis en train de développer une petite application de gestion de réservation et une question que je me pose depuis quelques mois déjà refait surface. Alors voilà, j'ai une méthode qui s'occupe d'aller chercher les détails de mon client via une méthode getClientByID1(Int32 ID) (l'ID du client est unique (clé primaire)). Cette méthode fonctionne de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public Client getClientByID1(Int32 value)
            {
                Client returnValue = null;
     
                command = new OleDbCommand("select id, nom, adresse, ville, codepostal, province, pays, telephone, telephonecell, courriel, fax, solde from client where id=@1", DB.ConnectionBD());
                command.Parameters.Add("@1", OleDbType.Integer).Value = (Int32)value;
     
                dr = command.ExecuteReader();
     
                while (dr.Read())
                {
                    c = new Client((Int32)dr[0], dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString(), dr[8].ToString(), dr[9].ToString(), dr[10].ToString(), Convert.ToDouble(dr[11]));
                    returnValue = c;
                }
     
                return returnValue;
            }
    DB.ConnectionBD() est un singleton retournant la connexion à la base de données.

    Ma question est : est-ce qu'il y a un moyen mieux que celui utilisé ici pour créer un objet «Client» et le retourner? Lorsque je fais des requêtes select et que je remplis un DataGridView (par exemple) avec les résultats, je peux comprendre le while(DataReader.Read()), mais lorsque je ne sélectionne qu'un seul enregistrement, est-ce qu'il y a un moyen plus simple que de passer par ça et de convertir / caster chacun des résultats?
    ((Int32)dr[0], dr[1].ToString, etc)

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    deja un petit conseil, à la place de mettre un index numerique pour accéder à tes colonnes tu peux mettre le nom du champs, c'est plus lisible, et plus facile à maintenir.

    Exemple:
    (Int32)dr[0] -> (Int32)dr["ID"]

Discussions similaires

  1. [PDO] comptage des lignes retournées par une requête SELECT un peu complexe
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/02/2015, 21h37
  2. [PDO] compter les lignes retournées par une requête SELECT
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/01/2015, 14h40
  3. Réponses: 3
    Dernier message: 28/04/2010, 08h12
  4. fusion de 2 colonnes dans une requête select?
    Par epeichette dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/11/2005, 23h05
  5. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59

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