我有两(2)个MS Access数据库,在不同的位置有不同的连接。从第一个数据库的表中删除记录是有效的,但插入从第二个数据库的表中复制的新记录不起作用。第一个数据库的表保持空白。发生了什么事情是它将新记录插入到第二个数据库的表中,这就是为什么第二个数据库有许多记录,因为它复制并插入到自身。我想要的是将第二个数据库中复制的记录粘贴/插入第一个数据库。
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()
请帮帮我。谢谢。
答案 0 :(得分: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
,并且不会保存任何内容。