使用設計模式構建通用資料庫訪問類

2021-04-17 21:10:09 字數 1986 閱讀 1068

在應用程式的設計中,資料庫的訪問是非常重要的,我們通常需要將對資料庫的訪問集中起來,以保證良好的封裝性和可維護性。在.net中,資料庫的訪問,對於微軟自家的sqlserver和其他資料庫(支援oledb),採用不同的訪問方法,這些類分別分布於system.data.sqlclient和system.data.oledb命名空間中。微軟後來又推出了專門用於訪問oracle資料庫的類庫。 我們希望在編寫應用系統的時候,不因這麼多類的不同而受到影響,能夠盡量做到資料庫無關,當後台資料庫發生變更的時候,不需要更改客戶端的**。

我們先來看看factory的含義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。我們這裡可能會處理對多種資料庫的操作,因此,需要首先定義乙個操縱資料庫的介面,然後,根據資料庫的不同,由類工廠決定例項化哪個類。

下面,我們首先來定義這個訪問介面。為了方便說明問題,我們在這裡只列出了比較少的方法,其他的方法是很容易參照新增的。

public inte***ce dataaccess

//資料庫型別

idbconnection dbconnection //得到資料庫連線

void open(); //開啟資料庫連線

void close(); //關閉資料庫連線

idbtransaction begintransaction(); //開始乙個事務

int executenonquery(string commandtext); //執行sql語句

dataset executedataset(string commandtext);//執行sql,返回dataset

} 因為,dataaccess的具體實現類有一些共同的方法,所以,先從dataaccess實現乙個抽象的abstractdataaccess類,包含一些公用方法。然後,我們分別為sql server、oracle和oledb資料庫編寫三個資料訪問的具體實現類:

public sealed class mssqldataaccess : abstractdataaccess

public class oledbdataaccess : abstractdataaccess

public class oracledataaccess : abstractdataaccess

現在我們已經完成了所要的功能,下面,我們需要建立乙個factory類,來實現自動資料庫切換的管理。這個類很簡單,主要的功能就是根據資料庫型別,返回適當的資料庫操縱類。

public sealed class dataaccessfactory

private static persistenceproperty defaultpersistenceproperty;

public static persistenceproperty defaultpersistenceproperty

set

} public static dataaccess createdataaccess(persistenceproperty pp)

return dataaccess;

} public static dataaccess createdataaccess() }

好了,現在,一切都完成了,客戶端在**呼叫的時候,可能就是採用如下形式:

persistenceproperty pp = new persistenceproperty();

pp.connectionstring = "server=127.0.0.1;uid=sa;pwd=;database=northwind;";

pp.databasetype = databasetype. mssqlserver;

pp.userid = 「sa」;

pp.password = 「」;

dataaccess db= dataaccessfactory.createdataaccess(pp)

db.open();

……//db.需要的操作

使用設計模式構建通用資料庫訪問類

使用設計模式構建通用資料庫訪問類 在應用程式的設計中,資料庫的訪問是非常重要的,我們通常需要將對資料庫的訪問集中起來,以保證良好的封裝性和可維護性。在.net中,資料庫的訪問,對於微軟自家的sqlserver和其他資料庫 支援oledb 採用不同的訪問方法,這些類分別分布於system.data.s...

c 通用資料庫訪問類

在應用程式的設計中,資料庫的訪問是非常重要的,我們通常需要將對資料庫的訪問集中起來,以保證良好的封裝性和可維護性。在.net中,資料庫的訪問,對於微軟自家的sqlserver和其他資料庫 支援oledb 採用不同的訪問方法,這些類分別分布於system.data.sqlclient和system.d...

通用資料庫訪問DLL實現

通用資料庫訪問模組 實現介面 通過范型類來做所有操作的物件,來對應任何表結構的資料。這種通用型別只能對單錶操作吧,不是很方便。包裝通用事務和通用資料庫鏈結物件,便於對不通資料庫相容 內建方法為泛型型別物件的,增刪改及查詢,加返回泛型集合物件 通用表物件對映模型 基類實現 新增更新字典,加入查詢表字段...