Erreur de code [Résolu]

Signaler
Messages postés
70
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
19 avril 2012
-
Messages postés
70
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
19 avril 2012
-
Salut à tous voilà j'essai de lier mon listview à
ma base, mon but est d'afficher seulement les valeurs
de la colonne sigle_dest, voici donc mon code:

string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\Stagiaire\\Mes documents\\judi\\LCT\\LCT\\LCT\\LCT.mdb";
string s = "SELECT * FROM Destinataires";
OleDbConnection oConnection = new OleDbConnection(strconn);
OleDbCommand oCommand = new OleDbCommand();
oCommand.Connection = oConnection;
oCommand.CommandText = s;
oConnection.Open();
OleDbDataReader oReader = oCommand.ExecuteReader();
do
{
sigle_destCheckedListBox.Items.Add(oReader.GetString(0));
}
while (oReader.Read());
oReader.Close();
oConnection.Close();


quand je le lance il y a une erreur du genre comme ça:
"l'exception InvalidOperation n'a pas été gérée:
=>Aucune donnée n'existe pour la ligne/colonne"

est-ce que quelqu'un a une solution svp?
merci.

3 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Quand ton oReader est créé il ne correspond pas encore à ton 1er élément : il faut d'abord utiliser la méthode oReader.Read();

Il y a donc 2(.5) raisons d'utiliser un while à la place du do-while :
- Tu n'auras pas à faire un oReader.Read() avant
- Si ta requête ne renvoie aucun résultat, tu n'auras pas d'exception générée.
- (et en plus tu gagnes 5 octets dans ton code source xD )

OleDbDataReader oReader = oCommand.ExecuteReader();
while (oReader.Read())
{
    sigle_destCheckedListBox.Items.Add(oReader.GetString(0));
}


PS : Utilise les balises
 ... 
autour de ton code.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Ah, oui, j'avais oublié que les balises allaient être exécutées.
 ... 
en replaçant < et > par [ et ]

Tu peux aussi insérer ça automatiquement via la liste déroulante "code" au dessus de la zone de texte.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
Messages postés
70
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
19 avril 2012

Infiniment merci!
Comme toujouors vous avez la réponse,
depuis des jours que je m'y colle!
Maintenant ça marche très bien!