背景信息:
我有一个DataGridView,可以将MS Access中的表加载到其中和/或添加数据。它不是数据绑定的(我不想要)。 我以前所做的是在保存新数据之前从MS Access表中删除数据。但我想以正确的方式进行操作(+丢失数据的机会会更少)。
问题: 当我这样做
Adapter.Update(DataTable) 'OleDb.OleDbDataAdapter
就像在行中添加数据到datagridview一样,最后只是添加(插入)数据。
我想做的是覆盖MS Access表中的数据,使其看起来与新保存的数据相同(可以更新的行得到更新,添加了新行,删除了删除的行)
换句话说,如果我要保存6行,我想在数据库中看到6行,而不是更多而不是更少。
我还尝试加载数据,然后对其进行更改,然后将其保存回去,但是结果是一样的。例如,如果我加载5行并保存5行,那么在保存之后,我最终会得到10行。
Adapter = New OleDb.OleDbDataAdapter("SELECT * FROM " & DB_TableName, DB_Connection)
Dim TempDataTable As New DataTable
BotDB_Adapter.Fill(TempDataTable )
'edit data here
Adapter.Update(TempDataTable)
TLDR:如何将DataTable保存到MS Access表中,以便覆盖其中已经存在的数据。
答案 0 :(得分:0)
这是由于行状态被“添加”了,解决它的唯一方法是将各个行状态更改为适当的状态。
由于没有更好的答案,因此我看不到其他解决方法,因此请关闭它。