Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个数据库可由多台计算机编辑_Java_Mysql_Server - Fatal编程技术网

Java 一个数据库可由多台计算机编辑

Java 一个数据库可由多台计算机编辑,java,mysql,server,Java,Mysql,Server,我不熟悉这一级别的编码,我想知道如何获得一个数据库,让不同网络上的多个用户可以编辑 我正在尝试制作一个应用程序,让草坪服务的客户可以下载我的“应用程序”或代码,插入他们的地址,并更新他们的工作日志。然后,boss可以在另一台机器上检索此信息 我有一个java应用程序,它使用swing作为前端。它会提示用户输入地址,询问他们是否要更新/检索工作日志/访问其他地址 首先,我将这些数据序列化,以便以后可以检索,但这只在一台机器上起作用 接下来,我通过JDBC将其与MySQL连接,因此它存储在一个简单的

我不熟悉这一级别的编码,我想知道如何获得一个数据库,让不同网络上的多个用户可以编辑

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

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

首先,我将这些数据序列化,以便以后可以检索,但这只在一台机器上起作用

接下来,我通过JDBC将其与MySQL连接,因此它存储在一个简单的表中,其中address作为主键,work log作为唯一的其他列

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

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

非常感谢

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


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

根据您的解释,您试图做的似乎是一个简单的客户机-服务器应用程序

  • 客户端:您的Java应用程序
  • 服务器:MySQL数据库服务器(位于 网络服务器在线)
因此,您需要做的就是让客户端安装/访问Java应用程序,并使用one数据库


如果你不强制使用java,那么简单地考虑一个PHP解决方案,用户可以使用他们的Web浏览器访问。

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

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

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


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

最终用户计算机不应直接访问共享数据库。这是一场安全噩梦;您的用户将有权绕过任何数据完整性检查或安全性检查,包括修改或删除其他用户的数据。您需要一个在服务器上运行的web应用程序来充当数据库和用户机器之间的中间人。web应用程序将负责对用户进行身份验证和强制执行任何安全约束,并将执行所有数据库交互。你可以让一个桌面应用程序向服务器发送HTTP,也可以只使用一个实际的网站。另外,在构建你自己的网站之前,先调查一个可以满足你需要的web应用程序是否已经存在。对,这对我来说更像是一个学习项目,我构建它的人可能会使用它,也可能不会实际使用它。无论哪种方式,它都是小规模的,我怀疑有人会尝试侵入它,这并没有真正的好处。我肯定有类似的网络应用程序可以做同样的工作,但就像我说的,我这样做是为了学习和获得经验,这不像是那个家伙付钱给我的哈哈。谢谢“无论哪种方式,它的规模都很小,我怀疑是否有人会尝试侵入它,这并没有真正的好处。”数据完整性与安全性同样令人担忧。一个错误也会造成同样大的伤害。不管怎样,如果你正在努力学习,你能学到的最有价值的一课就是在工作中使用正确的工具。我看到了很多很多问题和浪费的时间,这些都可以通过这样做来避免。注意,为了提高安全性,我可以让每个用户创建一个用户名和密码吗?至于中间人,swing应用程序不会这样做。在当前设置时,会弹出一个窗口,要求他们根据需要输入一个数字,如果他们决定向worklog添加一个项目,则在后端完成。作者正在编写一个桌面应用程序(使用Swing GUI工具包)下载到每台机器上,而不是web应用程序。您提到使用PHP表明您误解了这一点。使用桌面应用程序执行您建议的操作需要将凭据分发到每台计算机的数据库中。非常不安全。这似乎是一个简单的方法,但我试图让它离线,从而免费。谢谢非常感谢您的快速回复!我要试一试,我会让你知道事情的进展。我有很多东西要学,但我喜欢你给了我一条很好的学习之路