刷新数据库更新 C# 上的列表框数据库值

本文关键字:数据库 列表 更新 刷新 | 更新日期: 2023-09-27 18:36:19

所以我在其他地方读过这个问题几次,但在阅读了所有这些问题之后,我仍然有一个可行的解决方案。

问题是我正在使用访问数据库信息填充列表框,您可以在下面看到:

private void FinancienData_Load(object sender, EventArgs e)
   {
   try
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string query = "select * from Betaald where Maand='Januari'";
            command.CommandText = query;
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {                                    
                listBox4.Items.Add(reader["Autoverzekering"].ToString());                   
                listBox4.Items.Add(reader["Brabant Water"].ToString());                   
                listBox4.Items.Add(reader["Eigen Risico Nicolas"].ToString());                    
                listBox4.Items.Add(reader["Essent"].ToString());                  
                listBox4.Items.Add(reader["Extra"].ToString());                    
                listBox4.Items.Add(reader["Gemeenschappelijke Heffingen"].ToString());                    
                listBox4.Items.Add(reader["Huur"].ToString());
                listBox4.Items.Add(reader["Reiskosten Nicolas"].ToString());                    
                listBox4.Items.Add(reader["RKDVC"].ToString());
                listBox4.Items.Add(reader["Telefoonrekening Nicolas"].ToString());                    
                listBox4.Items.Add(reader["Telefoonrekening Wendy"].ToString());                    
                listBox4.Items.Add(reader["Woonverzekering"].ToString());                          
                listBox4.Items.Add(reader["Ziggo"].ToString());
                listBox4.Items.Add(reader["Zorgverzekering Nicolas"].ToString());
                listBox4.Items.Add(reader["Zorgverzekering Wendy"].ToString());                             
            }
            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error" + ex);
        }
  }

这一切都工作正常,但也有一种方法用户可以更新数据库值。这是按如下方式完成的:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                string query = "update Betaald set Autoverzekering='JA'";
                command.CommandText = query;
                command.ExecuteNonQuery();  //is nu non-query omdat je data insert
                connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error" + ex);
            }

此更新有效,数据库中的值正在更改。尽管问题是该值不会在显示它的列表框中更新...我需要找到一种简单的方法,当用户按下该按钮时,它不仅会在 Access 数据库中更新,还会在 ListBox 中更新(而无需重新启动整个窗体)。

我已经尝试了我读到的多种内容(listBox4.DataSource,ListBox RefreshItems等),但由于某种原因我无法让它工作(可能是因为我对C#和.NET很陌生)。

谁能帮我?

提前感谢!

刷新数据库更新 C# 上的列表框数据库值

private void FinancienData_Load 方法中,不会将数据库集绑定到列表框,而是从表中读取行,将包含行结果的 ListBoxItems 添加到列表框中。这主要是为什么listBox4.DataSource绑定不起作用。

为了使更新正常工作,我建议稍微重构一下代码:如何将从数据库加载值的代码放入其自己的方法中,例如 void LoadDataFromDb() .完成后,只需在更新值后调用此方法即可。然后,该方法将从数据库表中获取更新的值,并再次填充 listBox。不要忘记将listBox4.Items.Clear()添加到LoadDataFromDb()方法中,否则将不断向 listBox 添加新项,而不是"刷新"项。