首页 > 解决方案 > 从 DataTable 更新 OleDB 表的最简单方法

问题描述

从以前修改过的导入表vb.NET中更新完整表的最简单方法是什么 ( )?OleDB

这就是我所拥有的。

首先,我从Access数据库中导入表:

Dim PRDB As String = "Provider=Microsoft.ACE.OLEDB.12.0;                                    
                      Data Source=<location>;
                      Jet OLEDB:Database Password=<password>"                                                        
Dim CNDB As New OleDb.OleDbConnection(PRDB)                                                                              
Dim CMDB As New OleDb.OleDbCommand                                                                                
Dim ADDB As New OleDb.OleDbDataAdapter(CMDB)                                                                       
Dim TBDB As New DataTable                                                                                                    

Try : CNDB.Open()
Catch EX As Exception : MsgBox(EX.ToString) : End Try

Try : CMDB.CommandText = "SELECT * FROM [TABLE 01]" : ADDB.Fill(TBDB)
Catch EX As Exception : MsgBox(EX.ToString) : End Try

到目前为止,一切都很好。我设法TABLE 01成功导入到TBDB.

现在,假设我更改了一个单元格DataTable

TBDB.Rows(2).Item(3) = "CHANGED"

有没有办法直接更新OleBD表格而不描述更改的单元格地址?就像是

ADDB.Update(TBDB) (?)

我已经尝试了最后一段代码,但它没有用(我认为它只有在参数DataRow不是 a时才有效DataTable)。

我研究了这个问题,但是对于这个(明显的)简单任务,我找到的所有答案看起来都有些复杂。所以我想知道是否有更直接的方法来做到这一点 - 我也读过一些关于的东西Binders,但我不太明白这个方法。

谢谢

标签: vb.netdatatableoledb

解决方案


感谢@Fadi,我设法使用以下方法获得了我正在寻找的确切方法OleDbCommandBuilder

Dim CMNDBUID As OleDb.OleDbCommandBuilder
CMNDBUID = New OleDb.OleDbCommandBuilder(ADDB)
CMNDBUID.GetUpdateCommand()

然后我可以轻松更新Access表格:

Try : ADDB.Update(TBDB)
Catch EX As Exception : MsgBox(EX.ToString) : End Try 

推荐阅读