我正在开发一个Java桌面应用程序,它将在同一主机上使用MySQL
DB。一旦启动我的应用程序,如何检查MySQL是否安装在该主机上?Java:如何检查MySQL是否安装在Windows上?
我当然可以检查DriverManager#getConnection()
不会抛出异常,但它不能确定是否安装了MySQL
。 DriverManager#getConnection()
可能会在URL不正确(包括不正确的端口号)或用户/密码不匹配等情况下发生异常。
我正在开发一个Java桌面应用程序,它将在同一主机上使用MySQL
DB。一旦启动我的应用程序,如何检查MySQL是否安装在该主机上?Java:如何检查MySQL是否安装在Windows上?
我当然可以检查DriverManager#getConnection()
不会抛出异常,但它不能确定是否安装了MySQL
。 DriverManager#getConnection()
可能会在URL不正确(包括不正确的端口号)或用户/密码不匹配等情况下发生异常。
桌面应用程序的安装过程的一部分包括写入连接字符串任何所需的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的要点是允许多个用户共享相同的数据集。所以,你需要灵活地配置连接字符串。
为什么你需要确切地知道?如果你无法连接,它是否有所作为? –
@SteveSmith,我想告诉用户他们需要在使用产品之前先安装MySQL(作为先决条件)。 –
够公平的。我的解决方案是显示消息“无法连接到MySQL - 您确定它已安装?” :) –