C# обновить выпадающий список со значениями базы данных - PullRequest
0 голосов
/ 05 мая 2020

Здравствуйте, у меня есть база данных с драйверами и выпадающим списком, в которой содержатся драйверы. Но когда я добавляю новый драйвер с помощью кнопки «Добавить драйвер», он добавляется только в таблицу Microsoft Acces, а не в поле со списком. И как только я перезагружаю программу, новый драйвер удаляется из базы данных. Я также подключил базу данных в источнике данных, и я могу редактировать таблицы только оттуда (если я хочу редактировать поле со списком).

Это мое соединение с базой данных

private void Form1_Load (object sender, EventArgs e) {con = new OleDbConnection ("Provider = Microsoft.ACE.Oledb.12.0; Data Source = transportDateBase .accdb "); cmd = новый OleDbCommand (); con.Open (); cmd.Connection = con; string query = "ВЫБРАТЬ имя ИЗ драйверов"; cmd.CommandText = запрос; OleDbDataReader reader = cmd.ExecuteReader (); while (reader.Read ()) {comboDriver.Items.Add (читатель ["Имя"]); } con.Close ();

, а это моя кнопка «Добавить драйвер»:

OleDbConnection conn = new OleDbConnection (); conn.ConnectionString = ("Provider = Microsoft.ACE.Oledb.12.0; Data Source = transportDateBase.accdb");

        String Id = textID.Text;
        String Name = textName.Text;
        String Age = textAge.Text;
        String City = textCity.Text;

        OleDbCommand cmd = new OleDbCommand("INSERT into Drivers (Id, Name, Age, City) Values(@Id, @Name, @Age, @City)");
        cmd.Connection = conn;

        conn.Open();

        if (conn.State == ConnectionState.Open)
        {
            cmd.Parameters.Add("@Id", OleDbType.VarChar).Value = Id;
            cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name;
            cmd.Parameters.Add("@Age", OleDbType.VarChar).Value = Age;
            cmd.Parameters.Add("@City", OleDbType.VarChar).Value = City;

            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("New Driver Added");
                conn.Close();
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Source);
                conn.Close();
            }

Пожалуйста, помогите мне найти мою ошибку ..

1 Ответ

0 голосов
/ 05 мая 2020

То, что вы добавили его в свою базу данных, не означает, что ничего другого не произойдет.

Вам все равно нужно обновить пользовательский интерфейс.

Добавьте это после того, как вы выполнили запрос:

comboDriver.Items.Add(Name);

В стороне, вы также должны заключить conn.Open () в try catch

...