2016-07-26 4 views
1

У меня есть две (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() 

Пожалуйста, помогите мне в этом. Спасибо.

ответ

0

E.g.

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 имеют RowState от Added и поэтому готовы к установке. Без этого все объекты RowState будут Unchanged, и ничего не будет сохранено.

Смежные вопросы