我已经检查了这个主题的答案,但我仍然不知道为什么这不起作用!请帮助!
private void btnAdd_Click(object sender, EventArgs e)
{
SqlCeCommand insTitle = new SqlCeCommand("Insert into Titles(Title) values('" + txtAddTitle.Text +"')");
insTitle.Connection = dbConnection;
try
{
if (dbConnection.State == ConnectionState.Closed) { dbConnection.Open(); }
insTitle.ExecuteNonQuery();
this.hRDataSet.AcceptChanges();
this.titlesTableAdapter.Update(this.hRDataSet);
this.tableAdapterManager.UpdateAll(this.hRDataSet);
lstTitles.BeginUpdate();
lstTitles.DataSource = titlesBindingSource;
lstTitles.DisplayMember = "Title";
lstTitles.ValueMember = "Title_ID";
lstTitles.EndUpdate();
}
catch (Exception insErr)
{
MessageBox.Show(insErr.Message);
}
}
列表框“lstTitles”不会刷新,也不会显示添加的项目,尽管它们在数据库中!
答案 0 :(得分:0)
Update
的{{1}}方法用于使用DataAdapter
中所做的更改来更新数据库。您需要做的就是相反:您需要使用数据库中修改过的数据更新DataSet
,因此您应该使用DataSet
,而不是Fill
。
无论如何,你的方法不是最优的;由于您正在使用数据集,因此应将新值添加到Update
中的相应表中,然后使用DataSet
方法更新数据库。 ListBox将自动获取更改。
Update