我正在開發一個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 - 您確定它已安裝?」 :) –