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

问题描述:

我有两个(2)MS Access数据库在不同的位置具有不同的连接。从第一个数据库的表中删除记录正在工作,但插入从第二个数据库的表中复制的新记录不起作用。第一个数据库的表格保持空白。发生了什么事是它将新记录插入到第二个数据库的表中,这就是为什么第二个数据库有许多记录,因为它复制并插入到自身中。我想要的是从第二个数据库复制的记录将被粘贴/插入到第一个数据库。如何使用不同的连接字符串将记录从一个表复制到另一个数据库表?

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

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属性,该属性确保所有DataRowsRowState的值为Added,因此可以插入。没有这一点,所有RowState属性将Unchanged和没有得到保存。