清除所有行后,数据库不会更改

时间:2012-04-22 18:29:25

标签: c# database datatable

我在尝试使用C#清除DataTable时遇到了重大问题。

在编辑数据库中的信息的所有其他时刻,我使用了类似

的内容
somethingTableTableAdapter1.Update(greenParksDataSet);  
greenParksDataSet1.AcceptChanges();

这个工作得很好。但是,在我的一个表单中,我有一个按钮来清除打开的表格。它似乎清除了内存中的DataTable,但实际上没有将更改传播到数据库。基本上代码归结为

greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = -1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = -1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = 1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = 1;
greenParksDataSet.HistoryTable.Rows.Clear();


historyTableTableAdapter.Update(greenParksDataSet);
greenParksDataSet.AcceptChanges();

我已经尝试过处理事情的顺序,但似乎没有任何工作。使用该代码,DataTable将被清除(并且更改将显示在DataGridView中),但在此之后添加historyTableTableAdapter.Fill(greenParksDataSet.HistoryTable);时,会显示数据库未进行任何更改。

我可能已经错过了一些明显的东西,但是我已经困惑了很多年了,任何帮助都会受到赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

查看this question/answer

Clear只对内存中的数据表起作用 - 它不会将它们标记为删除。

答案 1 :(得分:0)

我认为你正在使用绑定源,所以试试这个:

greenParksDataSet.HistoryTable.Rows.Clear();
HistoryTableBindingSource.EndEdit();

historyTableTableAdapter.Update(greenParksDataSet);
greenParksDataSet.AcceptChanges();