2017-05-25 65 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的要點是允許多個用戶共享相同的數據集。所以,你需要靈活地配置連接字符串。