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

Posted

技术标签:

【中文标题】C# 使用数据库值更新组合框【英文标题】:C# update combobox with Database values 【发布时间】:2020-08-20 03:58:09 【问题描述】:

您好,我有一个包含驱动程序的数据库和一个包含驱动程序的组合框。但是当我使用添加驱动程序按钮添加新驱动程序时,它只添加到 Microsoft Access 表中,而不是组合框中。一旦我重新加载程序,新的驱动程序就会从数据库中删除。我还连接了数据源中的数据库,我只能从那里编辑表(如果我想编辑组合框)。

这是我与数据库的连接

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

这是我的添加驱动程序按钮:

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】:

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

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

在执行查询后添加:

comboDriver.Items.Add(Name);

顺便说一句,您还应该将 conn.Open() 包装在 try catch 中

【讨论】:

以上是关于C# 使用数据库值更新组合框的主要内容,如果未能解决你的问题,请参考以下文章

未选择任何内容时将默认值保存在组合框中c#

具有相同数据源的多个组合框 (C#)

使用组合框值更改时的新存储值更新/刷新 dojo 数据网格

C#组合框,将文本值分配给焦点丢失事件的变量?

根据组合框选择 C# 更改组合框值

C#组合框控件ComboBox