刷新数据库更新 C# 上的 ListBox 数据库值
Refreshing ListBox Database values on database Update C#
所以我在其他地方读过几次这个问题,但在阅读了所有这些问题之后,我仍然有一个可行的解决方案。
问题是我正在用 Access 数据库信息填充列表框,您可以在下面看到:
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);
}
此更新有效,正在更改数据库中的值。虽然问题是值不会在显示它的 ListBox 中更新......我需要找到一种简单的方法,当用户按下该按钮时,它不仅会在 Access 数据库中更新,还会在 ListBox 中更新(没有重新启动整个表单)。
我已经尝试了很多我读到的东西(listBox4.DataSource、ListBox RefreshItems 等),但出于某种原因我无法让它工作(可能是因为我对 C# 和 .NET 还很陌生)。
有人能帮帮我吗?
提前致谢!
在您的 private void FinancienData_Load
方法中,您没有将数据库集绑定到列表框,而是从 table 中读取行,将包含行结果的 ListBoxItems 添加到列表框.这就是 listBox4.DataSource
绑定不起作用的主要原因。
为了使更新工作,我建议稍微重构代码:如何将从数据库加载值的代码放入它自己的方法中,例如void LoadDataFromDb()
。完成后,您可以在更新值后简单地调用此方法。然后该方法将从数据库 table 中获取更新后的值并再次填充列表框。不要忘记将 listBox4.Items.Clear()
添加到您的 LoadDataFromDb()
方法,否则您将不断向列表框添加新项目,而不是 "refreshing" 项目。
所以我在其他地方读过几次这个问题,但在阅读了所有这些问题之后,我仍然有一个可行的解决方案。
问题是我正在用 Access 数据库信息填充列表框,您可以在下面看到:
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);
}
此更新有效,正在更改数据库中的值。虽然问题是值不会在显示它的 ListBox 中更新......我需要找到一种简单的方法,当用户按下该按钮时,它不仅会在 Access 数据库中更新,还会在 ListBox 中更新(没有重新启动整个表单)。
我已经尝试了很多我读到的东西(listBox4.DataSource、ListBox RefreshItems 等),但出于某种原因我无法让它工作(可能是因为我对 C# 和 .NET 还很陌生)。
有人能帮帮我吗?
提前致谢!
在您的 private void FinancienData_Load
方法中,您没有将数据库集绑定到列表框,而是从 table 中读取行,将包含行结果的 ListBoxItems 添加到列表框.这就是 listBox4.DataSource
绑定不起作用的主要原因。
为了使更新工作,我建议稍微重构代码:如何将从数据库加载值的代码放入它自己的方法中,例如void LoadDataFromDb()
。完成后,您可以在更新值后简单地调用此方法。然后该方法将从数据库 table 中获取更新后的值并再次填充列表框。不要忘记将 listBox4.Items.Clear()
添加到您的 LoadDataFromDb()
方法,否则您将不断向列表框添加新项目,而不是 "refreshing" 项目。