Remplir un combobox à partir d'une BDD

Fermé
KheNek Messages postés 2 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 3 avril 2013 - 2 avril 2013 à 14:02
 Utilisateur anonyme - 3 avril 2013 à 17:29
Bonjour,
je voudrais remplir un combobox à partir de ma BDD mais je n'y arrive pas!!!
j'ai un tableau dont l'une de ses colonnes contient un ensemble de Cultures (domaine: Agronomie) et je voudrais afficher cet ensemble de Cultures dans un combobx mais qui se trouve en dehors de la colonne (la combo est en dehors de mon tableau!!) mais je ne sais pas comment faire!!

j'ai déjà visité quelques sites et je trouve toujours les mêmes réponses dans le genre :

Cobx.DataSource = CultArborescence;
Cobx.DisplayMember = "CultLib";
Cobx.ValueMember = "CultId";


mais cela ne marche pas chez moi!!

est-ce que vous pouvez m'aider s'il vous plait??

Merci

4 réponses

Utilisateur anonyme
3 avril 2013 à 16:51
salut !

Déjà il faut voir au niveau de ton connecteur. Perso je ne connais pas cette utilisation, je fais un requêtage direct sur ma base et je récupère les infos à ecrire dans mes combo.

J'ai une petite classe faite pour :

public class cMySql
    {
        private MySqlConnection pMySQL;
        private string sHost = "";
        private int iPort = 0;
        private string sUser = "";
        private string sPassword = "";
        private string sDatabase = "";
        private string sConnexionstring = "";
        private string Erreur = "";
        private bool bIsOk = false;
        private int iResultInFic;
        private string[] lastResult;
        //--constructeurs. Se connecte au moment de l'initialisation
        public cMySql()
            : this("127.0.0.1", 22, "root", "", "")
        {
        }
        public cMySql(string tsHost, int tiPort, string tsUser, string tsPassword, string tsDatabase)
        {
            sHost = tsHost;
            iPort = tiPort;
            sUser = tsUser;
            sPassword = tsPassword;
            sDatabase = tsDatabase;
            sConnexionstring = "server=" + sHost + ";User Id=" + sUser + ";password=" + sPassword + ";database=" + sDatabase + ";Allow User Variables=true";
            connect();
        }
        private void connect()
        {
            pMySQL = new MySqlConnection(sConnexionstring);
            pMySQL.Open();
        }
        //--recuperer la derniere erreur
        public string GetErreur() { return Erreur; }
        //--lancer une requete de type query. renvoi {0:pas de resultats,1:ok,2:erreur}
        public int Query(string sQuery)//améliorer la récupération des résultats, à 16.000.000 de resultats, on se fait jeter
        {
            foreach(string s in Directory.GetFiles(@"c:\*.dump"))
                File.Delete(s);
            iResultInFic = 0;
            Erreur = "";
            lastResult = new string[0];
            bIsOk = false;
            int retour = 0;
            MySqlCommand cmdMySQL = pMySQL.CreateCommand();
            cmdMySQL.CommandText = sQuery;
            MySqlDataReader reader;
            try
            {
                reader = cmdMySQL.ExecuteReader();
            }
            catch (MySqlException e)
            {
                Erreur = e.Message.ToString();
                return 2;
            }
            bIsOk = true;
            int nbChamps = reader.FieldCount - 1;
            string res = "";
            List<String> tab = new List<String>();
            while (reader.Read())
            {
                for (int i = 0; i <= nbChamps; i++)
                    res += reader.GetValue(i) + ";";

                try
                {
                    tab.Add(res);
                }
                catch (OutOfMemoryException e)
                {
                    iResultInFic ++;
                    using (StreamWriter sw = new StreamWriter(@"c:\tmpSql_" + iResultInFic.ToString() + ".dump"))
                        foreach (string s in tab)
                            sw.WriteLine(s);
                    tab.Clear();
                    tab.Add(res);
                }
                res = "";
            }
            if (tab.Count > 0)
                retour = 1;
            lastResult = new string[tab.Count];
            int j = 0;
            foreach (string s in tab)
            {
                lastResult[j] = s;
                j++;
            }
            reader.Close();
            return retour;
        }

        //--Executer une requete select, renvoi les résultats dans un tableau de string, chaque colonnes séparées par un ';', renvoi l'exeption en cas d'erreur 
        public string[] getRes()
        {
            if (!bIsOk)
            {
                if (Erreur != "")
                {
                    Exception e = new Exception(Erreur);
                    throw e;
                }
                else
                {
                    Exception e = new Exception("PAS DE REQUETE");
                    throw e;
                }
            }
            if (iResultInFic > 0)
            {
                throw new Exception("ficRes");
            }
            return lastResult;
        }

        //--Executer une requete insert, 0 en cas d'erreur, 1 si ok
        public int Exec(string sExec)
        {
            MySqlCommand cmdMySQL = pMySQL.CreateCommand();
            Erreur = "";
            cmdMySQL.CommandText = sExec;
            try
            {
                cmdMySQL.ExecuteNonQuery();
            }
            catch (MySqlException e)
            { Erreur = e.Message.ToString(); return 0; }

            return 1;
        }

        //--récupérer edernier identifiant insérer
        public int lastInsertId()
        {
            MySqlCommand cmdMySQL = pMySQL.CreateCommand();
            cmdMySQL.CommandText = "SELECT LAST_INSERT_ID()";
            MySqlDataReader reader = cmdMySQL.ExecuteReader();
            try
            {
                if (reader.Read())
                {
                    return reader.GetInt32(0);
                }
                else
                {
                    return 0;
                }
            }
            finally
            {
                reader.Close();
            }
        }

        //--modifier base
        public void set_base(String tsBase)
        {
            sDatabase = tsBase;
            sConnexionstring = "server=" + sHost + ";User Id=" + sUser + ";password=" + sPassword + ";database=" + sDatabase + ";Allow User Variables=true";
            connect();
        }
    }

je ne dis pas qu'elle est parfaite et fonctionne toujours, mais pour ma part ca fonctionne très bien.

bne journée
naga
0
Utilisateur anonyme
3 avril 2013 à 16:52
ps : il te faudra "MySql.Data.dll" pour l'utiliser
0
KheNek Messages postés 2 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 3 avril 2013
3 avril 2013 à 17:12
Merci nagashima pour ta réponse, mais je voudrais savoir comment est-ce que tu remplies tes combo??
0
Utilisateur anonyme
3 avril 2013 à 17:29
et bien ensuite il te suffit de rajouter chaque element. Pour rajouter un element , de tête, c'est

taCombo.Items.Add(uneValeurEnString)
0