前一段時間正好在學習設計模式,剛好Vs2012又發布了,所以就決定用它們來設計一個例子程序。
可能很多程序員在開發程序時都會涉及到多種數據庫的訪問問題,有時候不對於不同的數據庫類型要采用不同的數據驅動類,
如:SqlClient,OracleClient等。這樣在使用時可能感覺非常不方便,雖然方法與參數都差不多,但類型卻不一樣,一日切換一種數據源,
就得修改對應代碼,尤其是那些專門寫業務服務的開發人員...。
於是我們就希望有一種萬能的DBClient,只要告訴它連接的數據庫類型與訪問信息,它就能為你創建一個Db代理,你只需要發送給它
與我們業務相關的SQL,它就能返回一種統一的數據類型(如DataTable、DataReader或者XML格式數據)。這樣我們使用時就不用考慮
那么多返回值類型的問題。
基於上邊的分析,我們知道可以使用設計模式中的簡單工廠實現上面的需求,而且在VS2012中加強了Oledb數據訪問的性能,於是
我們可以使用簡單工廠來實現基於Oledb的多數據庫查詢。
第一步,我們先建立一個數據庫連接配置的抽象類或者接口(IDBConfig),它主要包含一些用於連接數據庫服務器的信息,如:
第二步,我們需要建立個幾種接收數據返回值的數據返回類,它主要包含返回成功或者失敗標識,錯誤信息,如:
另外我們可能需要更具體的返回值,那么我們分別建立幾個它子類,用於接收DataTable、DataReader、
以及純Text類型的數據,如:
第三步,我們需要建立一個數據庫抽象類或者接口(IDB),它繼承自IDBConfig,因為每個庫要有連接配置信息,當然
我們可以將IDBConfig定義為IDB的一個屬性,但為了方便轉換,暫時使用繼承實現,如:
第四步,在完成了以上幾步之后,本來可以分別去實現上一步中的數據庫接口了,但是經過分析后發現,其實如果我們用Oledb來實現的話
只有連接串不一樣,其它都方法都一至,於是我們先建立一個基礎庫類DataBase以繼承第三步中的IDB,它先實現除拼接連接串以外的所有方
法,同時為了方便了類重寫一些特殊方法,我們將其標識為virtual,如:
第五步,現在可以分別建立不同種類數據庫子類了,如:SqlServer、Db2、Oracle等,它們都繼承自DataBase類,如Oracle:
第六步,最后我們要建立本例子中最重要的數據庫工廠(DBFactory)了,它是一個靜態類,並且提供一個建立具體數據庫的方法,如:
第七步,用Vs2012,WPF建立測試程序,最終展示效果如下:
A. 使用數據庫工廠
B. 登錄會話
C.查詢主界面
程序文件地址:http://files.cnblogs.com/chinawen/E-SQL.zip