首页 > 解决方案 > 比较两个表并更新第二个表

问题描述

我是java新手,我正在处理两张表,一张在服务器端,另一张在客户端。我想要的是当服务器数据库中有任何更新时,它应该反映在客户端数据库中,并且当在服务器中找不到客户端数据时,它应该被删除。在下面的代码中,我获取了两个表数据。

服务器表 1

  ID     |   NAME
  1      |   ABC
  2      |   ABC
  4      |   ABC
  5      |   ABC

本地表2

  ID     |   NAME
  1      |   ABC
  2      |   ABC
  3      |   ABC
  4      |   ABC

本地表上的预期结果

  ID     |   NAME
  1      |   ABC
  2      |   ABC
  4      |   ABC
  5      |   ABC

这是我的代码

// LOCAL DATA
ResultSet local_data = stmth2.executeQuery("SELECT * FROM emoticon");
local_data.next();

//SERVER DATA
Class.forName("com.mysql.jdbc.Driver");
Connection con9 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mood","root","");
Statement stmt9 = con9.createStatement();
ResultSet server_data = stmt9.executeQuery("SELECT * FROM emo");

有没有标准的方法来实现这一点

标签: javamysqlsql

解决方案


如果两个表都在不同的 MySQL 服务器上,您可以使用复制

否则,如果本地表不在另一个 MySQL 服务器中,您可能会找到一种在 Java 程序中模仿 MySQL 服务器的方法。也就是说,让它无论如何都可以用作复制的从属。

或者,这在您的 Java 程序中应该总是可能的,使用轮询。让一个线程检查远程表并每隔n秒将其与本地表同步。当然,这对资源来说并不是太温和。并且在更改传播到客户端之前会有延迟。


推荐阅读