如何使用不同的连接字符串将记录从一个 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
都具有 Added
的 RowState
,因此可以插入。否则,所有 RowState
属性都将是 Unchanged
,并且不会保存任何内容。
我有两 (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
都具有 Added
的 RowState
,因此可以插入。否则,所有 RowState
属性都将是 Unchanged
,并且不会保存任何内容。