2011-10-10 61 views
0

我有一个(对我来说)复杂的问题,但是试图解决这个线程中只有一个问题。交付一个启动MySQL的Java应用程序(自包含应用程序)

我有一个Java应用程序,在后端有一个MySQL数据库。

我希望能够通过安装程序(这也是我目前没有解决方案的一部分)预先通过数据库交付应用程序。

无论如何现在的问题是,我的首选是MySQL不应该作为服务安装。
我的理由是,我宁愿不修改机器,我的应用程序将被部署。
我更愿意提供“自包含”应用程序。

因此,如果MySQL不作为服务安装,那么它必须以某种方式启动。
我知道我可以启动MySQL作为使用独立:

mysqld --standalone --console

在这种情况下,一个新的命令行窗口中打开和MySQL运行(我在开发/测试代码中使用它为止)。

我不知道如何在应用程序部署完成后实现相同的效果(并通过运行时代码启动MySQL)。

我想到了用Runtime的和做类似:

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec("PATH\\mysqld --standalone --console"); //PATH is of course the appropriate path to MySQL installation 

但是,这似乎并没有做任何事情。它只是在疯狂。

理想情况下,我想启动MySQL 没有concole打开

有没有解决我的问题?

+4

为什么要使用MySQL呢?你可以使用嵌入式数据库......本地Java有很多选择,它们提供了MySQL的功能奇偶校验... – Romain

+0

是的,我知道。嵌入式数据库的问题在于它们保存所有数据以重建内联数据库,内存数据库中的文件,用户可以意外删除或损坏。我想确保这不会发生。否则,是例如HSQL将是一种选择 – Cratylus

+2

您还需要处理其他问题,例如其他MySql安装已在使用的端口等。对于自包含应用程序,嵌入式数据库是更好的解决方案。 – mellamokb

回答

1

检查MySQL Connector/MXJ。您可以从here下载它,它可以完全控制数据库的启动和停止。一旦下载并解压zip,请检查'src'文件夹下的ConnectorMXJObjectTestExample.java。它会给你完整的想法。

+0

+ 1.这很有趣。我尝试了这个例子,似乎mysql开始了,但是我找不到我的表格。它似乎以某种方式创建了自己的数据库。有必要更多地了解这个,但是您之前是否使用了它?我看到它会创建许多脚本和文件,并将其作为“数据库”目录在用户指定的目录中执行 – Cratylus

+0

此外,似乎开始使用的mysqld不能停止,而是手动终止 – Cratylus

1

为什么你想让自己的生活变得艰难?不要使用MySQL,而不是使用Embedded Database,如:

+0

:谢谢你的回复。使用嵌入式数据库我认为它更适合于应用程序的使用而不是最终用户数据的存储。我还担心它们会重新创建文本脚本中的所有内容。无论如何,这是一个特例。我想提供一个小工具给第三方,在计算机上没有多少“知识”,我觉得使用MySQL更安全。虽然我可以担心很多...但是我需要的东西我希望是可以的 – Cratylus

+0

我认为几个选项来到我的脑海1)为他们做一个远程安装,因为它是一次性任务或更好2)找到一个托管站点为他们的可用性和安全的原因,因为托管是相当便宜,他们中的一些甚至有phpAdmin帐户访问他们。 –

相关问题