从 DataTable 更新 OleDB table 的最简单方法

Easiest way to update a OleDB table from a DataTable

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

这是我的。

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

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 table 而无需描述更改的单元格地址?像

ADDB.Update(TBDB) (?)

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

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

谢谢

在SQL服务器中等价于:

Private Sub UpdateDBFromDataTable(myDataTable As DataTable)
    'Change with your connection string
    Dim connectionString As String = "Data Source = MyServerName/Instance; Integrated Security=true; Initial Catalog=YourDatabase"

    Using connection As SqlConnection = New SqlConnection(connectionString)
        connection.Open()

        Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connection)

            For Each c As DataColumn In myDataTable.Columns
                bulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName)
            Next

            'Put here your table name in Database
            bulkCopy.DestinationTableName = myDataTable.TableName

            Try
                bulkCopy.WriteToServer(myDataTable)
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
        End Using
    End Using
End Sub

感谢@Fadi,我设法使用 OleDbCommandBuilder:

找到了我正在寻找的确切方法
Dim CMNDBUID As OleDb.OleDbCommandBuilder
CMNDBUID = New OleDb.OleDbCommandBuilder(ADDB)
CMNDBUID.GetUpdateCommand()

然后我可以轻松更新 Access table:

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