我正在制作Marksheet Generation系统。 D系统将安装在多台计算机上,并在单独的专用计算机上安装集中式数据库服务器。
我需要的是,如果用户#1从PC1插入数据,更新的记录应该反映在安装在PC2上的系统上的d JavaFX
TableView
上。同样应该走另一条路。
但是我应该如何实现呢?
设置计时器并触发SQL查询并不是一个很好的选择。
使用Hibernate和JavaFx
进行演示。我已在JavaFX
TableView
列出了MySQL数据库记录,TableView
不会自行更新,除非我触发了Select查询。
但是我需要找到一种方法是我的系统,或者特别是TableView
应该监听或观察数据库中的变化,如果数据库表中的d记录由同一系统或由同一系统更新,它应该自动更新d安装在不同机器上的其他系统。
答案 0 :(得分:1)
您可以使用open replicator library。您必须配置MySQL以允许复制指定的数据库并使用库编写Java代码来监听数据库更改。
它调用java代码的触发器。
final OpenReplicator or = new OpenReplicator();
or.setUser("root");
or.setPassword("123456");
or.setHost("localhost");
or.setPort(3306);
or.setServerId(6789);
or.setBinlogPosition(4);
or.setBinlogFileName("mysql_bin.000001");
or.setBinlogEventListener(new BinlogEventListener() {
public void onEvents(BinlogEventV4 event) {
// your code goes here
}
});
or.start();
因此您可以捕获插入/更新/删除。检查哪个表被打开并反映模型中的更改。