C#用数据库值更新组合框

问题描述 投票:0回答:1

你好,我有一个数据库,里面有驱动程序和combobox,combobox里有驱动程序。但是,当我使用 "添加驱动程序 "按钮添加新的驱动程序时,它只在Microsoft Acces表中添加,而不是在combobox中添加。而且一旦我重新加载程序,新的驱动程序就会从数据库中删除。我还在Data Source中连接了数据库,我只能在那里编辑表(如果我想编辑组合框)。

这是我与数据库的连接情况

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

这就是我的Add Driver按钮。

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

请帮助我找到我的错误...

c# database combobox add
1个回答
0
投票

仅仅因为您将它添加到数据库中,并不意味着会发生任何其他事情。

你仍然需要更新你的用户界面。

在执行完查询后,再将其添加进去。

comboDriver.Items.Add(Name);

顺便说一下,你也应该把conn.Open()用try catch包起来

© www.soinside.com 2019 - 2024. All rights reserved.