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.