分布式 Java 桌面应用程序 mySQL 数据库
Posted
技术标签:
【中文标题】分布式 Java 桌面应用程序 mySQL 数据库【英文标题】:Distributed Java desktop app mySQL database 【发布时间】:2015-09-26 21:52:38 【问题描述】:我目前正在学习 Java 和 Swing,并且正在尝试创建一个桌面应用程序。 作为这个应用程序的一部分,我已经设置了一个应用程序连接到的 mysql 数据库,但是我不确定如果我要为其他用户分发应用程序,这将如何工作,我将如何创建他们的数据库如果他们没有安装 mySQL 或未启动数据库,则可以在他们的系统上使用。 我们将不胜感激。
【问题讨论】:
【参考方案1】:您应该使用嵌入式数据库。我不建议将 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
文件添加到您的库中。
【讨论】:
你的意思是Enterprise Edition
by 用于商业应用程序的MySQL?
我在某个地方参与了关于将 MySQL 用于商业应用程序的讨论——发现对于小型项目来说太贵了。所以切换到 HSQLDB - 这很棒。还尝试了 JavaDB/Derby - 但经历了内存泄漏。目前不确定 MySQL 许可,您应该检查自己。
有免费的Community Edition
。那怎么可能太贵?
您的意思是Community Edition
可以用于商业应用吗?在这种情况下,我认为这也很棒。
***.com/q/1921437/1700321 和 xaprb.com/blog/2009/02/17/…。【参考方案2】:
我建议查看 SQLite 而不是 mySQL。听起来您需要一个不需要服务器来运行的独立数据库。我已经完成了 Java(和 android)、Swing 以及 C#。我发现 SQLite 是在不同平台上拥有数据库而不安装服务器的最佳解决方案。
【讨论】:
从我目前使用的 mySQL 转换为 SQLite 会不会很简单? 我发现它非常简单,尽管与其他任何东西一样有一个学习曲线。 无论如何,我们还成功地将 SqlLite 与 Borland Delphi(现在的 Embarcadero XE)一起使用。该产品是一个分布式保龄球应用程序。主数据库是 SQL Server。但是每对通道都有一个 SQLLite 数据库来维护名称和分数的本地备份(以防与 MSQL 的连接中断)。【参考方案3】:您有三个选择:
每个桌面都有自己的私有数据库。
每个桌面都与一个远程数据库服务器通信。
每个桌面都与远程数据库服务器的 Web 前端通信。
“选项 3”是最常见的情况。一种选择是“网络应用程序”(在这种情况下,您根本不需要“Swing 桌面”应用程序)。另一种选择是“厚客户端 Java 小程序”。您可以使用 Swing,大部分处理将在本地进行……但您的 Swing 小程序将与远程数据库通信以进行数据库访问。您可以考虑使用REST 接口。
如果您真的想要选项 1(应用程序和数据库完全位于桌面本地),那么我肯定会选择 embedded database。 Sqlite 是一个很好的选择。事实上,Android 使用的是 Sqlite。 HSQLDB 甚至 MS-Access 也是不错的选择。
【讨论】:
我追求的是选项 1,每个用户都有自己的私有且唯一的数据库【参考方案4】:关于您的问题,我想问一下您是否在应用程序的用户之间共享数据库信息。我的意思是,如果您需要将数据集中在一个数据库中,用户可以通过桌面 Swing 应用程序访问。
如果是这样,那么您将需要另一个应用程序来提供存储在数据库中的信息(此时您可以使用 Web 服务),那么您只需要实现 Web 服务客户端代码即可与之交互通过 Swing 应用程序访问您的数据库。
现在,如果您想要每个用户拥有一个数据库的独立应用程序。然后您可以选择多种选择,例如:
SQL Lite H2 Database Engine Apache Derby HSQLDB希望这可以为您提供所需实施的方向。
编码愉快。
【讨论】:
以上是关于分布式 Java 桌面应用程序 mySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章
是否可以通过Servlet或类似方法将Java桌面应用程序与MySQL连接起来?
zabbix监控nginx监控mysql数据库监控java应用Zabbix + proxy分布式