audib6
audib6

Reputation: 1

C# update combobox with Database values

Hello I have a database with drivers and a combobox which is populated with the drivers. But when I add a new driver with a button Add Driver, it's added only in Microsoft Access table, not in the combobox. And once I reload the program, the new driver is deleted from the database. I also have connected the database in Data Source and I can edit the tables only from there(if I want to edit the combobox).

This is my connection with the database

private void Form1_Load(object sender, EventArgs e)
{
    con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=transportDateBase.accdb");
    cmd = new OleDbCommand();
    con.Open();
    cmd.Connection = con;
    string query = "SELECT Name FROM Drivers";
    cmd.CommandText = query;
    OleDbDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        comboDriver.Items.Add(reader["Name"]);
    }
    con.Close();

and this is my Add Driver button:

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();
    }

Upvotes: 0

Views: 251

Answers (1)

Glynn Hurrell
Glynn Hurrell

Reputation: 652

Just because you've added it to your database, doesn't mean anything else will happen.

You still need to update your UI.

Add this in after you have executed the query:

comboDriver.Items.Add(Name);

As an aside, you should also wrap the conn.Open() in a try catch as well

Upvotes: 1

Related Questions