在Java桌面应用程序中嵌入MySQL

11

我不清楚如何在Java桌面应用程序中嵌入MySQL以便通过单个可执行文件在任何计算机上安装该应用程序,并且这样做可以设置数据库并提供一个可执行文件来运行该应用程序。目前为止,我使用NetBeans构建了我的应用程序,并使用MySQL设置了数据库。请进一步指导我。


你能在桌面应用程序中嵌入MySQL吗?怎么做?这是否可能? - Java Man
对我来说,这似乎非常有用。 - ajayg2808
5个回答

7
MySQL不是嵌入式数据库——唯一与之相关的JAR是JDBC驱动程序。它需要安装过程,可能可以通过Java脚本化,但该过程肯定会在您打算支持的Java应用程序之外运行。也就是说,您可以关闭Java应用程序,但MySQL服务/守护进程仍将运行。
只有libmysqld是可嵌入的。
有嵌入式数据库——SQLite、Firebird——以及使用Java制作的嵌入式数据库——HSQL、Derby/(无法记住之前叫什么)。我认为SQL Server Compact Edition是可嵌入的,而SQL Server Express/MSDE则不是。我不知道Oracle是否有可嵌入版本....

有一个MySQL的嵌入式版本libmysqld,但我同意你的观点,有其他更适合这项工作的数据库。由于这是Java,我建议使用HSQL。 - Cesar
3
好的,我可以进行翻译。内容如下:@Cesar: 谢谢,我之前不知道 libmysqld 这个库。 - OMG Ponies

3

H2 数据库能否处理大量数据?我们可以轻松备份吗? - Andrew
备份H2相当容易。上次我尝试过,H2在处理像MySql那样的千兆字节数据时并不擅长。但我认为它应该可以轻松处理5000行数据。 - Jay Askren

1

看一下http://dev.mysql.com/doc/refman/5.0/en/connector-mxj.html。我记不清具体细节了,但我能够在桌面应用程序中嵌入MySQL数据库,用户无需单独安装。

关键类是com.mysql.management.MysqldResource。

这里是示例http://dev.mysql.com/doc/refman/5.0/en/connector-mxj-configuration-java-object.html

mysql-connector-mxj-gpl-db-files.jar文件包含所有平台的MySQL安装文件。如果您知道目标平台是哪个,可以从jar中剥离其他平台版本,以减小最终用户的下载大小。


1

虽然理论上可能,但并不容易。标准的MySQL发行版假定您想要设置一个通用的数据库服务器,与客户端应用程序通过ODBC等进行通信。

您可能更好地查看“纯Java”选项,如HSQL或JavaDB,它们被设计为嵌入到Java应用程序中,并且几乎不需要“设置”。

另一个可能性是Sqlite,它只需要一个单独的二进制文件加上sqljbbc jar文件。这也是从头开始设计为嵌入在应用程序中的,并且除了为数据库分配文件之外,不需要任何管理员权限。


考虑到你所说的可能性,你能否提供任何关于如何配置它的教程链接,无论是复杂的还是简单的? - Hussain Akhtar Wahid 'Ghouri'

0
如果您想要一个与Java嵌入式数据库,那么请使用一个专为嵌入式设计的Java编写的数据库。我知道Apache Derby可以被嵌入,显然H2也可以。
您需要处理多少数据量?

我正在开发一种会计软件,需要记录付款并相应地生成报告。现在,什么类型的嵌入式数据库可以满足我的要求? - Andrew
请提供您预期的数据量估计。只需提供大小 - 1、1000、1000000等 - 每个表中的行数、每个表的总数据量等。 - Thorbjørn Ravn Andersen
行数可能达到5k,然后它们将被移动到归档...现在你能帮忙吗? - Andrew
这个数据量对于嵌入式数据库来说不应该太大。个人建议使用Apache Derby,并学习数据库表文件存储的位置,以便将它们放置在正确的位置。 - Thorbjørn Ravn Andersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接