【发布时间】:2016-01-15 12:08:33
【问题描述】:
我需要比较两个数据表。
dataTable A 包含客户端计算机上的当前数据集。
dataTable B 包含未来对 dataTable A 的更新。
dataTable A structure
ID | firstname | lastName
1 | "test" | "last"
2 | "whatever" | "someone"
3 | "hi" | "hello
dataTable B Structure
ID | firstname | lastName
1 | "updated" | "yes"
2 ->deleted
3 | "hi" | hello" ->unchanged
4 | "new" |record " ->row added
当我去 dataTableA.merge(datatableB)
我基本上只是得到 dataTableA 和 dataTableB 添加的行 比如
ID | firstname | lastName
1 | "test" | "last"
2 | "whatever" | "someone"
3 | "hi" | "hello
1 | "updated" | "yes"
3 | "hi" | hello" ->unchanged
4 | "new" |record " ->row added
它在 ID 上不匹配并被更新或删除。我只想比较两个表,更新应该看起来与表 B 完全相同的表 A。我不太确定如何正确完成此操作。
基本上,客户端机器中有一个 SQL 表需要完成更新并准确同步到正在传入的数据表 B。理论上我只想获取表 B 并基本上更新表 A。所以在我需要更新 SQL 表。我尝试过这样的事情。
Dim adapter = New SqlDataAdapter("select * from test_table2", connection)
Using (New SqlCommandBuilder(adapter))
adapter.Fill(dTable)
connection.Open()
adapter.Update(dTable)
End Using
好像没用。
【问题讨论】:
-
@haraman 您编辑的最后一行没有意义。
-
感谢您的指出,刚刚验证了编辑,想知道那行是从哪里来的,因为当我开始编辑时它已经在那里了。已更正。
-
@Sirus 两个独立的数据表,不能这样直接合并。你可以在这里找到关于数据表的很好的参考A-Practical-Guide-to-NET-DataTables-DataSets
-
好的...我只是想找到一种方法来同步两个数据表。它们来自不同的数据库,但具有相同的架构。我想分析更新/编辑/删除需要不同的地方,然后更新 sql 表。似乎这很难找到一个简单的方法
-
@Sirus 这两个数据库是否在同一个 SQL Server 实例中?然后,您可以轻松地在 SQL 中完成所有操作。如果数据库可以相互连接,那么您仍然可以在 SQL 中进行操作:What is the T-SQL syntax to connect to another SQL Server?
标签: vb.net datatable merge synchronization compare