2017-05-25 96 views
-1

我正在开发一个Java桌面应用程序,它将在同一主机上使用MySQL DB。一旦启动我的应用程序,如何检查MySQL是否安装在该主机上?Java:如何检查MySQL是否安装在Windows上?

我当然可以检查DriverManager#getConnection()不会抛出异常,但它不能确定是否安装了MySQLDriverManager#getConnection()可能会在URL不正确(包括不正确的端口号)或用户/密码不匹配等情况下发生异常。

+0

为什么你需要确切地知道?如果你无法连接,它是否有所作为? –

+0

@SteveSmith,我想告诉用户他们需要在使用产品之前先安装MySQL(作为先决条件)。 –

+0

够公平的。我的解决方案是显示消息“无法连接到MySQL - 您确定它已安装?” :) –

回答

0

桌面应用程序的安装过程的一部分包括写入连接字符串任何所需的DBMS操作。

这些连接字符串包括DBMS主机名,凭据(用户名/密码)和可能的数据库名称。如果需要安全通信(TLS/SSL),他们会提到这一点。

要解决您的问题中的问题,请在软件包中创建默认连接字符串。在安装和/或启动桌面应用程序的过程中,您尝试使用它进行连接。如果你的连接成功,好。

这样的连接字符串可能

 jdbc:mysql://localhost/nimish?user=defaultuser&password=secretsecret 

连接到用户的计算机上的数据库名为“nimish”具有凭证defaultuser/secretsecret。

如果您的连接失败,通常可以从错误消息中告诉出了什么问题。连接请求是否立即被拒绝?如果是这样,MySQL服务器要么没有安装,要么没有运行。服务器响应超时了吗?在这种情况下,MySQL服务器有问题。你有没有得到证书拒绝(密码错误等)?如果是这样,你就知道这是问题所在。

在这些情况下,您的应用程序弹出打开一个对话框说,在提供适当友好的用户体验的方式,

呦!用户!此连接字符串不起作用。想给我一个吗?

您的对话框可以解释“必须确保MySQL正在运行”之类的内容。它可以要求一个新的密码,并为用户做一些有意义的事情。

这使您的应用程序能够在另一台机器上与DBMS一起工作,如果事实证明这很有用。在这种情况下,你的对话框可以说“你的系统管理员可以给你这个信息。”

您可以编写一个单独的简单故障排除应用程序,它将环顾用户的文件系统,试图查找MySQL和其他必备软件,并在3306端口不会运行时宣布“MySQL似乎没有运行”没有回应。它可以宣布“我找不到MySQL服务器软件可执行文件”,但这是因为事情随着时间的推移软件安装的方式会发生变化,所以这是硬件

请注意:如果您知道你的数据库将总是是本地的,你应该调查到位的MySQL的使用SQLite。它不需要服务器,因此更容易安装和配置。通常,使用像MySQL这样的DBMS的要点是允许多个用户共享相同的数据集。所以,你需要灵活地配置连接字符串。