分布式Java桌面应用程序mySQL数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式Java桌面应用程序mySQL数据库相关的知识,希望对你有一定的参考价值。
我目前正在学习Java和swing,正在尝试创建一个桌面应用程序。作为此应用程序的一部分,我已经建立了一个与应用程序连接的mysql数据库,但是我不确定如果要为其他用户分发该应用程序,该数据库将如何工作,如何创建他们所使用的数据库如果未安装mySQL或未启动数据库,则可以在其系统上使用。帮助将不胜感激。
您应该使用嵌入式数据库。我不建议将MySQL用于商业应用程序,因为它非常昂贵。尝试使用HSQLDB-非常快并且没有内存泄漏(至少我没有注意到)。
这里是一个实现示例:
private static Connection conn;
/**
* Gets database connection.
*
* @return the database connection.
* @throws SQLException if database error occurs.
*/
public static Connection getConnection() throws SQLException
if (conn == null || conn.isClosed())
conn = DriverManager.getConnection("jdbc:hsqldb:file:data", "somedb", "");
// conn.setAutoCommit(false);
return conn;
确保已将hsqldb.jar
文件添加到库中。
我建议查看SQLite而不是mySQL。听起来您需要一个不需要服务器即可运行的独立数据库。我已经完成了Java(和android),Swing以及C#的开发。我发现SQLite是在不同平台上拥有数据库而不安装服务器的最佳解决方案。
您有三个选择:
每个桌面都有自己的私有数据库。
每个桌面都与一个远程数据库服务器对话。
每个桌面都与远程数据库服务器的Web前端对话。
“选项3”是最常见的情况。一种选择是“ Web应用程序”(在这种情况下,您根本不需要“ Swing Desktop”应用程序)。另一个选择是“厚客户端Java小程序”。您可以使用Swing,大多数处理将在本地进行,但是您的Swing小程序将与远程数据库进行通信以进行数据库访问。您可以考虑使用REST接口。
如果您真的想要选项1(应用程序和数据库完全在桌面上本地,那么我肯定会选择embedded database。 Sqlite是一个很好的选择。实际上,Android使用Sqlite。 HSQLDB甚至MS-Access也是不错的选择。
关于您的问题,请问您是否在应用程序的用户之间共享数据库的信息。我的意思是,如果您需要将数据集中在一个数据库中,则用户可以通过桌面Swing应用程序进行访问。
[如果是这样,那么您将需要另一个应用程序来提供存储在数据库中的信息(此时可以使用Web服务),那么您只需要实现Web Service客户端代码来与您的交互Swing应用程序访问数据库。
现在,如果要使用每个用户一个数据库的独立应用程序。然后,您可以选择许多选项,例如:
希望这可以使您了解需要实现的目标。
快乐编码。
Marcelo Tateje
感谢您的回答。我也面临类似的挑战,您的回答很适合我。但是我有一个问题。如果我使用Web服务将我的Swing桌面应用程序连接到数据库,Swing桌面应用程序是否需要互联网连接才能从数据库中获取数据?我希望我正确地问了。谢谢
以上是关于分布式Java桌面应用程序mySQL数据库的主要内容,如果未能解决你的问题,请参考以下文章