如何使用不同的连接字符串将记录从一个表复制到另一个数据库表?
问题描述:
我有两个(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
属性,该属性确保所有DataRows
的RowState
的值为Added
,因此可以插入。没有这一点,所有RowState
属性将Unchanged
和没有得到保存。