Probleme C# BDD OutOfRange

KrqcS Messages postés 22 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 8 janvier 2010 - 6 janv. 2010 à 16:31
KrqcS Messages postés 22 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 8 janvier 2010 - 6 janv. 2010 à 18:27
Bonjour à vous, j'essaye désesperemment de mettre le contenu de la colonne d'une table dans une combobox mais pas moyen.

OleDbConnection Calculette = new OleDbConnection(connect);
   		Calculette.Open();
     		string requete = "SELECT * from Pays";
OleDbCommand command = new OleDbCommand(requete, Calculette);	
OleDbDataReader myReader;
    myReader = command.ExecuteReader();
      		while (myReader.Read())
      		{	
      			string str = (string)myReader["Pays"];
            	cbPays.Items.Add(myReader["nomPays"]);
      		}
      		Calculette.Close();


Avec l'erreur suivante :


System.IndexOutOfRangeException: Pays
à System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
à System.Data.OleDb.OleDbDataReader.GetOrdinal(String name)
à System.Data.OleDb.OleDbDataReader.get_Item(String name)
à Calculette_Affretement_Heppner.Accueil.AccueilLoad(Object sender, EventArgs e) à System.Windows.Forms.Form.OnLoad(EventArgs e)
à System.Windows.Forms.Form.OnCreateControl()
à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
à System.Windows.Forms.Control.CreateControl()
à System.Windows.Forms.Control.WmShowWindow(Message& m)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ScrollableControl.WndProc(Message& m)
à System.Windows.Forms.ContainerControl.WndProc(Message& m)
à System.Windows.Forms.Form.WmShowWindow(Message& m)
à System.Windows.Forms.Form.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

4 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
6 janv. 2010 à 17:11
salut,

c'est
string str = myReader.GetString("Pays");


thip
0
KrqcS Messages postés 22 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 8 janvier 2010
6 janv. 2010 à 17:42
Merci Beaucoup :D, je test sa directement :p
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
6 janv. 2010 à 18:01
Salut

Si mes souvenirs sont corrects, la méthode GetString() (et toutes les méthodes GetMachin() des DataReader n'acceptent que des int en argument.

De plus, son code est théoriquement correct, même si je trouve ça plus propre :
string str = myReader["MonChamp"].ToString();


Mais l'erreur vient du fait que ta table Pays ne contient pas de champ Pays !!

while (myReader.Read())
{
    // Ta première ligne ne sert à rien et est fausse
    cbPays.Items.Add(myReader["nomPays"].ToString());
}


et si tu veux améliorer la lisibilité de ton code, indique quels champs tu souhaites lire dans ta base de données, plutôt que * :
string requete = "SELECT nomPays FROM Pays";
// Et si plusieurs champs :
string requete = "SELECT nomPays, identifiantPays FROM Pays";


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
KrqcS Messages postés 22 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 8 janvier 2010
6 janv. 2010 à 18:27
Thanks pour tout sa, je prends note :)
0
Rejoignez-nous