C# et les ArrayList (et un peu de bd aussi...)

Kati83 Messages postés 65 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 3 septembre 2004 - 16 mars 2004 à 14:49
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 - 25 juin 2004 à 17:08
Bonjour,

En fait, j'aurais besoin d'un petit conseil.
Je veux écrire une fonction qui se connecte à ma bd, et grâce à uine procédure stockée, récupère les champs que je lui demande.
Ensuite, je veux que ces champs, qui sont en fait les caractéristiques d'un objet (dont j'ai déjà créé la classe), soient stockés dans une liste d'objets...
Le truc, c'est que j'y arrive pas trop..
Est-ce que queslqu'un pourrait m'aider?
Je vous donne un bout de mon code si ça peut vous aider à comprendre mon problème...

connex.Open();
// monres = objet utilisé pour la lecture des données
//renvoyées

SqlDataReader monres = macmd.ExecuteReader();

// création de mon objet
MaClasseObjets MonObjet = new MaClasseObjets ();
// création d'une liste
ArrayList maliste = new ArrayList();

while (monres.Read())
{
for (int i=0; i<monres.FieldCount; i++)
{

// je mets les valeurs des champs dans mon objet => ici : pb...
}
// j'ajoute mon objet à ma liste
maliste.Add(MonObjet);
}
return maliste;

*** Kati ***

6 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 mars 2004 à 16:14
euh
le message d'erreur pourrait peut etre nous aider là
d'ailleurs si C le code d'ajout qui merde, met le aussi

Cocoricoooooooo !!!!
0
Kati83 Messages postés 65 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 3 septembre 2004
16 mars 2004 à 17:51
En fait, j'ai trouvé une solution "barbare".
Je fais :

while (monres.Read())
{
// ici je mets les valeurs des champs retournés dans mon
//objet
monobjet.Id = (int)monres.GetValue(0);
monobjet.Titre = (string)monres.GetValue(1);
//et ainsi de suite...
}
maliste.Add(Actu);

Ca tourne, mais en fait, je voudrais trouver un moyen d'automatiser un peu tout ça, pour faire en sorte de ne pas mettre à chaque fois le nom de l'attribut de mon objet. Ce code est pas pratique : le jour où je change un truc dans ma base, il va falloir que je retourne dans mon code pour tout modifier...

Je sais pas trop si je suis assez claire, et si tu vois ce que je veux dire.

En fait, je veux un code propre et sans les noms des attributs... Mais je sais pas si c'est possible :-/

Enfin merci à toi d'avoir essayé de m'aider !

*** Kati ***
0
Kati83 Messages postés 65 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 3 septembre 2004
16 mars 2004 à 17:53
Désolée, je viens de me rendre compte d'une petite erreur :
à la dernière ligne de code, maliste.Add(Actu); c'est en fait maliste.Add(monobjet);
Ca doit être un tout petit peu plus clair comme ça...

*** Kati ***
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 mars 2004 à 18:03
je vois pas trop comment faire ça

Cocoricoooooooo !!!!
0

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

Posez votre question
Kati83 Messages postés 65 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 3 septembre 2004
18 mars 2004 à 09:27
Merci quand même...

*** Kati ***
0
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 1
25 juin 2004 à 17:08
Pourquoi tu fais pas plutot :

while(monRes.Read())
{
     maliste.Add(new MonObjet(monRes.GetValue(0), monRes....))
}


sinon tu crées un constructeur de ta classe MonObjet qui prend en paramètre un tableau. Ainsi tu lui passes le résultat de toute la ligne renvoyée puis c'est dans ton constructeur que tu initialises toutes les variables de ton objet.

-=[JuS]=-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
0
Rejoignez-nous