MySql do ComboBox

0

Chciałbym wprowadzić dane do Comboboxa, ale wyskakuje błąd.

 public void lista()
        {
            db Samochody = new db(daneserwera[4], daneserwera[0], daneserwera[1], daneserwera[3], ref daneserwera[2]);
            string zapytanie = string.Format("SELECT * FROM serwis.auto inner join serwis.klient ON serwis.auto.id_klient=serwis.klient.id_klient inner join serwis.model ON serwis.auto.id_model=serwis.model.id_model");
           
            MySqlCommand polecenie = new MySqlCommand(zapytanie);
            MySqlDataReader odczyt = polecenie.ExecuteReader();
            string informacja = "nr win, nr rejestracyjny";
            SamochodyComboBox.Items.Add(informacja);
            while (odczyt.Read())
            {
                SamochodyComboBox.Items.Add(new ComboBox
                {
                    numer = odczyt["id-auto"] as string,
                    nazwa = string.Format("{0} {1} ",
                        odczyt["vin"],
                        odczyt["nr_rej"])
                });
            }
        }
    } 

Dzięki temu łącze się z bazą danych

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using MySql.Data.MySqlClient;

namespace WindowsFormsApplication1
{
    class db
    {
        private MySqlConnection polaczenie; 
        
        
        public db(string server, string user, string pass, string database, ref string status)  //  polaczenie
        {
            try
            {
                status = null;
                polaczenie = new MySqlConnection();
                polaczenie.ConnectionString = "server=" + server + ";uid=" + user + ";pwd=" + pass + ";database=" + database;
                polaczenie.Open();

            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                switch (ex.Number)
                { 
                    case 0 :
                        status = ex.ToString();
                        polaczenie.Close();
                        break;

                    case 1045 :
                        status = ex.ToString();
                        polaczenie.Close();
                        break;
                 }
           }
            status = null;
        }

To znalazłem w necie, pomaga w wrzuceniu danych do Comboboxa

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class ComboBox
    {
        public string numer { get; set; }
        public string nazwa { get; set; }


        public override string ToString()
        {
            return this.numer + "" + this.nazwa;
        }
    }
}

0

no to jak pomaga to wrzuć...

0

To rekordy które znajdują się w bazie danych przekształca je w stringa i układa je w takiej kolejności jakiej ja chce.
źle się wyraziłem, ort! mi żaden błąd, ale combobox jest cały czas pusty.

0

Chciałbym zrobić coś takiego że w combobox znajdują się 3 dane id_auto, vin, model. Po wymoże odpowiedniego auta, w textboxach pojawiają się dalsze informacje na jego temat.

0

Może jeszcze napisz, jaki błąd Ci wyskakuje ^^

0

a sorki, dopiero teraz zauważyłem co napisałeś.
Co do pustego comboboxa:
Pobieraj rekordy z bazy danych i wrzucaj je do instancji ObservableCollection, a w twoim comboxie ustaw raz:

TwojComboBox.Items = TwojeObservableCollection;

I za każdym razem kiedy pobierasz z bazy danych informacje po prostu najpierw wywołaj:

TwojeObservableCollection.Clear();

i potem możesz zapełniać nowymi rekordami kolekcję. Twoj ComboBox sam będzie wtedy wykrywał zmiany w ObservableCollection.

0

Zrobiłem coś takiego i działa, ale po dodaniu informacji od siebie, przestało poprawnie odczytywać combobox.

 
string informacja = "nr.Auta, nr.Rejestracyjny, Model";
SamochodyComboBox.Items.Add(informacja); // tu jest problem 

To mój cały kod:

private void Komis_Load(object sender, EventArgs e)
        {
            string sql = "SELECT id_auto, nr_rej, model FROM serwis.auto inner join serwis.klient ON serwis.auto.id_klient=serwis.klient.id_klient inner join serwis.model ON serwis.auto.id_model=serwis.model.id_model;";
            string Combo;

            db Samochody = new db(daneserwera[4], daneserwera[0], daneserwera[1], daneserwera[3], ref daneserwera[2]);
            samochody = Samochody.pobierz_dane(sql);
            string informacja = "nr.Auta, nr.Rejestracyjny, Model";// to dodałem i się popsuło :(

            SamochodyComboBox.Items.Add(informacja);// to dodałem i się popsuło :(
                

            for (int i = 0; i < samochody.Rows.Count; i++)
            {
                Combo = null;
                for (int j = 0; j < 3; j++)
                {
                    Combo = Combo + samochody.Rows[i][j].ToString();
                    Combo = Combo + " , ";
                }
                
                SamochodyComboBox.Items.Add(Combo);
            } 
private void SamochodyComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql = "SELECT id_auto, model, vin, nr_rej, data_zakupu, lat_gwarancji, auto_uwagi, silnik FROM serwis.auto  inner join serwis.model ON serwis.auto.id_model=serwis.model.id_model inner join serwis.silnik ON serwis.auto.id_silnik=serwis.silnik.id_silnik;";
            string Combo;

            sdb Samochody = new db(daneserwera[4], daneserwera[0], daneserwera[1], daneserwera[3], ref daneserwera[2]);
            samochody = Samochody.pobierz_dane(sql);

            for (int i = 0; i < samochody.Rows.Count; i++)
            {
                Combo = null;
                for (int j = 0; j < 3; j++)
                {
                    Combo = Combo + samochody.Rows[i][j].ToString();
                    Combo = Combo + " ";
                }

            }
           int ComboIndex;
              ComboIndex = (int)SamochodyComboBox.SelectedIndex;

              id_auto.Text = samochody.Rows[ComboIndex][0].ToString(); 
              model.Text = samochody.Rows[ComboIndex][1].ToString();
              vin.Text = samochody.Rows[ComboIndex][2].ToString();
              nr_rej.Text = samochody.Rows[ComboIndex][3].ToString();
              data_zakupu.Text = samochody.Rows[ComboIndex][4].ToString();
              lat_gwarancji.Text = samochody.Rows[ComboIndex][5].ToString();
              auto_uwagi.Text = samochody.Rows[ComboIndex][6].ToString();
              silnik.Text = samochody.Rows[ComboIndex][7].ToString();
              
        }
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1