2012-04-23 25 views
0

我正在開發一個項目,該項目將需要一個自定義「嚮導」來幫助非技術用戶安裝自定義數據庫驅動的應用程序。主要關心的是,如果已經有合適的數據庫引擎,則不要爲自定義應用程序設置新的數據庫。所以問題出現了:如何以編程方式檢測現有數據庫引擎的類型和位置?如何以編程方式發現本地網絡上的數據庫

這裏的訣竅是安裝程序的要求是嚮導幫助非技術用戶決定在兼容性列表上的本地專用網絡上是否存在數據庫引擎。如果是這樣,請協助非技術用戶與選定的數據庫引擎建立連接。否則,嚮導將安裝數據庫等。

不管現有的數據庫場景如何安裝首選的DBMS會更好嗎?該平臺是一個窗口框,但平臺獨立性是該項目的一個目標。

我不知道我是否只是使用錯誤的搜索條件,或者如果沒有真正的信息來達到這個效果,但是發現這是否可能會令人沮喪。

任何幫助,建議,鏈接,代碼資源等將不勝感激。

EDIT的檢測位置和現有數據庫的類型的目標是提供一個簡單的列表,用戶可以從選擇,用於在專用網絡上添加的應用程序的其他實例爲當前版本的情況下或作爲版本的升級(以實現「乾淨」安裝)。該應用程序有點分佈,通常會有很多應用程序實例(3-10)作爲終端與數據庫交互,以不同的方式處理信息以用於不同終端上的不同用途。我認爲首選的DBMS已經落戶於PostgreSQL。

  • 史蒂夫

回答

2

如果你知道你正在試圖連接到什麼類型的數據庫,你應該能夠ping的默認端口是數據庫類型看它是否返回響應。或者,也可以嘗試打開與數據庫的實際連接並查看是否收到響應。

變得更加複雜,如果您可以訪問網絡上的PC,瀏覽到數據庫類型的默認安裝目錄以查看是否存在任何內容。

到目前爲止,這2個要求使用默認位置和端口安裝數據庫。

越來越複雜,如果你可以連接到刪除計算機上的註冊表,那麼你或許可以找到數據庫在註冊表樹 - 這將是固定的,無論在用戶安裝數據庫


我的建議可能會完全避免這個,因爲它增加了很多複雜性,沒有太多的回報。如果您的應用程序是針對非技術性最終用戶的,那麼最好假定沒有任何數據庫可用,並且只需安裝新的數據庫作爲安裝程序的一部分即可。非技術用戶如果向他們展示一系列對他們來說真的沒有任何意義的數據庫選項,他們只會感到困惑。

它也可能需要很長時間才能查詢您的本地網絡,具體取決於存在多少網絡共享以及它們響應的速度。所有這些都會降低安裝程序的響應速度,因此最終用戶可能不知道安裝程序爲什麼沒有做任何事情。

如果你確實想要選擇一個現有的數據庫,我會把它作爲一個單獨的可選按鈕,將他們帶到另一個屏幕,他們可以選擇一個網絡主機進行調查 - 唯一的人會得到到這個屏幕會是更多的技術人員,他們可能會知道數據庫的存在位置。

+0

你帶來一些好點,謝謝!我想你已經爲工作站實例的安裝工作流程提供了一些有用的信息。我喜歡添加「高級」安裝選項的想法! – Kingsolmn 2012-04-24 11:45:55

1

主要問題是如果已經有合適的數據庫引擎,則不要爲自定義應用程序設置新的數據庫。

我不太明白嚮導如何確定現有的數據庫是否合適。假設它在網絡上找到3個Oracle和4個MySQL實例–它將如何選擇?此外,這種方法在用戶的應用程序和網絡上的另一臺機器之間創建了依賴關係,用戶甚至不知道它。當數據庫明天不可用時,用戶會做什麼?

在我看來,如果數據需要在幾個用戶或幾個系統之間共享,那麼數據庫的選擇必須是用戶明確的有意識的操作。另一方面,如果數據庫只是應用程序存儲某些內容的地方,那麼它應該安裝一個–,最好是一個像HSQLDBSQLite這樣的輕量級應用程序。

+0

感謝您的迴應,我在問題的初稿中應該更加清楚。該應用程序有點分散,中央數據庫是系統的骨幹,因此網絡依賴對用戶和系統利益相關者而言是明確的。如果要存儲的信息量很小,我想去HSQLDB,但是在短時間內收集大量數據的可能性已經將我們推向了PostgreSQL。 – Kingsolmn 2012-04-24 11:55:58

相關問題