cs_houba80
Messages postés11Date d'inscriptionmardi 30 septembre 2008StatutMembreDernière intervention10 avril 2013
-
30 mars 2010 à 01:36
cs_houba80
Messages postés11Date d'inscriptionmardi 30 septembre 2008StatutMembreDernière intervention10 avril 2013
-
30 mars 2010 à 22:24
Slaut cher mombre je suis entrain de developper un GED avec C#, j'ai une classe Groupe qui contient la méthode id_groupe(), cette derniere va me renvoyer les ID des groupe dans un tableau dynamique afin que je puisse affecter un utilisateur lors de sa création a un groupe, mais j'arrive pas a le faire, voici le code de ma méthode :
public List<string> id_groupe()
{
string rsql;
List<string> id = new List<string>();
rsql = "select * from groupe";
try
{
SqlCommand myCommand = new SqlCommand(rsql, CnxBase.myConn);
myCommand.Transaction = CnxBase.trans;
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
for (int i = 0; i < id.Capacity ; i++)
{
id.Insert(i, (String)myReader["ID_groupe"]) ;
// id[i] = "iheb";
}
et voici son appel dans la classe AjouterUtilisateur:
List<string> id_grp= new List<string>;
for (int i = 0; i < id_grp.Capacity; i++)
{
id_grp[i] = (string)(myGroupe.id_groupe().ToString());
groupe.Items.Add(id_grp[i]); //ceci est un combobox
}
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 30 mars 2010 à 15:50
Salut
Bon, tu as pas mal de trucs à corriger.
Déjà, commençons par les noms.
Tu as des id_grp, des id_groupe(), des MyGroupe, des id... on s'y perd.
Ensuite, la propriété Capacity de la classe List<T> n'est pas utilise sauf à des fins d'optimisation.
De plus, tu catch une exception dans le seul but de la renvoyer. Ça n'a absolument aucun intérêt.
Certaines boucles ne servent à rien dans ton code.
Enfin, si tu veux simplifier le code (mais perdre un (tout tout petit) peu de performances), utilise foreach plutôt que for.
public List<string> GetIdGroupe()
{
string requeteSQL = "SELECT * FROM groupe";
List<string> liste_id = new List<string>();
try
{
SqlCommand commande = new SqlCommand(requeteSQL, CnxBase.myConn);
SqlDataReader reader = commande.ExecuteReader();
while(reader.Read())
{
liste_id.Add((string)reader["ID_Groupe"]);
}
reader.Close();
return liste_id;
}
catch (Exception e)
{
MessageBox.Show("L'erreur suivante à été levée : " + e.Message);
}
}
// Appel de la méthode :
List<string> liste_id = GetIdGroupe();
foreach(string id in liste_id)
{
groupe.Items.Add(id);
}
Attention également que dans ce code (comme dans le tien), l'ouverture et la fermeture de la connexion à la base de données ne sont pas gérées.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 30 mars 2010 à 19:41
Alors encore quelques remarques :
Ton try / catch, là encore, ne sert à rien. En gros, tu dis "S'il y a une exception... il y a une exception"
Normalement, ton catch est censé corriger ou avertir du problème.
Et si tu veux absolument faire ça (faire un try/catch pour faire joli qui ne sert à rien), fait plutôt
throw myErr;
que
throw (new Exception(myErr.ToString()));
au moins, ainsi, tu gardes toutes les informations sur ton erreur (type, stack, message...) et pas simplement message.
Autre chose :
List<string> liste_id = new List<string>();
liste_id = myGroupe.GetIdGroupe();
Dans ta première ligne, tu crées une nouvelle liste qui ne sert à rien, puisque tu perds la référence à la deuxième ligne.
> List<string> liste_id myGroupe.GetIdGroupe();
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
cs_houba80
Messages postés11Date d'inscriptionmardi 30 septembre 2008StatutMembreDernière intervention10 avril 2013 30 mars 2010 à 22:24
j'ai essayer ton try catch mais ça pas marcher et je suis pas entrain de faire un try/catch pour faire joli qui ne sert à rien comme tu as dis.
bon pour l'appel de la méthode tu as totalement raison j'ai créer une liste qui sert à rien merci pour tes conseils mon pôte