vb.net比较2个数据库

时间:2012-08-13 13:20:52

标签: database vb.net ms-access

我有Database1和Database2,我将它们中的每一个添加到数据表对象。 现在Database1通过Access更改,可能会添加删除记录或行数据可能会更改。 所以数据库看起来像

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductA |   453 |    55 |
|  2 | ProductB |    43 |   156 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

所以,如果我删除产品ID = 1的行,我希望在第二个Database2中删除它 如果我添加ID为4的新产品,我希望将其添加到Database2,如果我更改价格或销售,我希望它在Database2中更改该记录。

现在问题是数据库记录在两个数据库中的顺序不同,所以循环可能需要很多时间...例如,如果ID = 4000被删除,那么我将循环遍历整个数据库以找到这个

除了很多循环之外,还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

可以在SQL中针对MS Access连接引用另一个数据库:

 SELECT t1.*, t2.* FROM Table1 t1 
 INNER JOIN [;DATABASE=Z:\Docs\Test.accdb].Table1 t2
 ON t1.ID=t2.ID

从这里开始,创建查询以查找丢失或更改的记录非常容易。

答案 1 :(得分:1)

如果ID是行的标识符,那么我认为您不能安全地执行您的要求。

鉴于上表1的例子

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductA |   453 |    55 |
|  2 | ProductB |    43 |   156 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

模拟表2的无序条件

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductB |    43 |   156 |
|  2 | ProductA |   453 |    55 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

如果从表2中删除ID 2,您将最终从表1中删除产品B(而不是产品A)。我不认为这是你想要的。

您确定ID是这些值的主键吗?