如何使用不同的连接字符串将记录从一个 table 复制到另一个数据库 table?

How to copy records from one table to another database table with different connection string?

我有两 (2) 个 MS Access 数据库,它们在不同位置有不同的连接。从第一个数据库的 table 中删除记录有效,但插入从第二个数据库的 table 中复制的新记录无效。第一个数据库的 table 保持空白。发生的事情是将新记录插入到第二个数据库的 table 中,这就是为什么第二个数据库有很多记录,因为它复制并插入到自身。我想要的是从第二个数据库复制的记录将 pasted/inserted 到第一个数据库。

SQLStr1 是第一个数据库的位置字符串 SQLStr2是第二个数据库的位置字符串

Dim conn As OleDbConnection
    Dim conn2 As OleDbConnection

    Dim cmd As OleDbCommand
    Dim cmd2 As OleDbCommand
    Dim SQLStr1 As String
    Dim SQLStr2 As String

    conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=psipop.accdb;Jet OLEDB:Database Password=cscfo13poppsi;")
   'I used 'psipop' because the database is located the same with the application.
    SQLStr1 = "DELETE * FROM pop 'psipop'"
    conn.Open()

    cmd = New OleDbCommand(SQLStr1, conn)
    cmd.ExecuteNonQuery()

    'I used " & TextBox3.Text & " because the textbox3 contains the path of the another database.
    conn2 = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" & TextBox3.Text & "' ;Jet OLEDB:Database Password=cscfo13poppsi; ")

    SQLStr2 = "INSERT INTO pop SELECT * FROM pop IN '" & TextBox3.Text & "'"
    conn2.Open()
    cmd2 = New OleDbCommand(SQLStr2, conn2)
    cmd2.ExecuteNonQuery()

请帮我解决这个问题。谢谢你。

例如

Using sourceConnection As New OleDbConnection("source connection string here"),
      destinationConnection As New OleDbConnection("source connection string here"),
      insertCommand As New OleDbCommand("INSERT statement here", destinationConnection),
      adapter As New OleDbDataAdapter("SELECT statement here", sourceConnection) With {.InsertCommand = insertCommand,
                                                                                       .AcceptChangesDuringFill = False}
    Dim table As New DataTable

    adapter.Fill(table)
    adapter.Update(table)
End Using

这将从一个数据库填充 DataTable 并将行插入到另一个数据库。您需要使用适当的参数配置 insertCommand。请特别注意 AcceptChangesDuringFill 属性,它确保所有 DataRows 都具有 AddedRowState,因此可以插入。否则,所有 RowState 属性都将是 Unchanged,并且不会保存任何内容。