首页 > 解决方案 > 一个数据库可被多台机器编辑

问题描述

我是这个级别的编码新手,想知道如何获得不同网络上的多个用户可以编辑的数据库。

我正在尝试制作一个应用程序,草坪服务的客户可以下载我的“应用程序”或代码,插入他们的地址,并更新他们的工作日志。然后老板可以在另一台机器上检索此信息。

我有一个使用 swing 作为前端的 java 应用程序。它提示用户输入他们的地址,询问他们是否想要更新/检索工作日志/访问不同的衣服。

首先,我对这些数据进行了序列化,以便以后可以检索到,但这只能在一台机器上运行。

接下来,我通过 JDBC 将它与 MySQL 连接起来,因此它存储在一个简单的表中,地址作为主键,工作日志作为唯一的另一列。

至少,我想弄清楚如何使这个程序工作,这样我就可以将它导出,发送给其他人,他们可以更新与我相同的数据库。

稍后我可以处理更多的动作监听器等,现在我无法弄清楚不同网络上的不同机器如何通过可执行 jar 访问同一个数据库。

非常感谢。

*当发送可执行 jar 到另一台机器时,它只能访问 *他们输入的信息。

*我希望它能够访问以前输入的信息,以及 *可能已经或可能已经在其他机器上输入的信息。

标签: javamysqlserver

解决方案


这是一种适合您的方法,允许您使用最少的对象映射来使用您的 Swing 应用程序。我认为这是你的目标,因为你走上了序列化的道路。试试这个: 1. 数据库中的数据被正确规范化为第三范式。2. JDBC 查询执行一个存储过程,以使您的对象数据以可消费格式完全非规范化。3. 存储过程使用 SQL 命令 For JSON。4. 使用 GSON 将结果集映射到您的 java 对象。GSON 会自动将 json 映射到您的对象。5. 如果最终用户更改了对象,请将其推回数据库并再次读取。不要只是在本地更新它。

我将我的对象存储在具有唯一标识符的哈希图中。这样,当我读入一个对象时,因为它已更新,插入到具有相同唯一 ID 的哈希图中,并用新版本替换旧版本。在 hashmap 上放置一个更改侦听器,以便在从数据库读取更新时更新 ui。使用 javafx 您可以进一步映射到可观察列表,以便 GUI 自动更新。

从技术上讲,您也可以使用序列化对象执行此操作。只需将版本 ID 和唯一 ID 与序列化对象一起存储。

无论哪种方式,您最终都会创建一个异步任务,该任务会定期检查数据库中的版本 ID 与哈希图中的对象。如果特定唯一标识符的版本发生更改,则将其引入并进行映射/类加载等。


推荐阅读