用工廠模式開發多資料庫連線類

2021-05-22 04:34:37 字數 3758 閱讀 5206

用工廠模式開發多資料庫連線類,是工廠模式最好的應用方式,也是很多初級使用設計模式的程式設計師都會涉及到的,下面是具體**:

a、建立乙個類庫,裡面有如下這些類

一、設計乙個抽象類

using system;

using system.collections.generic;

using system.text;

using system.data;

using system.configuration;

//工廠模式連線資料庫

namespace dbaccess

...//開啟乙個連線

public abstract void open();

//關閉乙個連線

public abstract void close();

//資料讀取的公共數

public abstract void publicclass(string procname, object parmas);

//執行無返回dataset的函式

public abstract string execsql(string procname, object parmas);

//執行有返回dataset的函式

public abstract dataset execsqlreturndataset(string tablename, string procname, object parmas);}}

二、定義乙個oracle連線類

using system;

using system.collections.generic;

using system.text;

using system.data;

using system.data.oracleclient;

using system.configuration;

//工廠模式連線資料庫中的oracle資料庫連線

namespace dbaccess

...//開啟乙個連線

public override void open()

...}

//關閉乙個連線

public override void close()

...}

//資料讀取的公共數

public override void publicclass(string procname, object parmas)

...if (oracleparmas != null && oracleparmas.length > 0)

...}

}//執行無返回dataset的函式

//儲存過程名

//引數陣列

public override string execsql(string procname, object parmas)

...catch(exception ex)

...}

//執行有返回dataset的函式

//dataset表名

//儲存過程名

//引數陣列

public override dataset execsqlreturndataset(string tablename, string procname, object parmas)

...return ds;

}catch (exception ex)

...}}}

三、定義乙個sqlserver連線類

using system;

using system.collections.generic;

using system.text;

using system.data;

using system.data.sqlclient;

using system.configuration;

//工廠模式連線資料庫中的sqlserver資料庫連線

namespace dbaccess

...//開啟乙個連線

public override void open()

...}

//關閉乙個連線

public override void close()

...}

//資料讀取的公共數

public override void publicclass(string procname, object parmas)

...if(sqlparmas != null && sqlparmas.length > 0 )

...}

}//執行無返回dataset的函式

public override string execsql(string procname, object parmas)

...catch (exception ex)

...}

//執行有返回dataset的函式

public override dataset execsqlreturndataset(string tablename, string procname, object parmas)

...return ds;

}catch (exception ex)

...}}}

四、建立工廠

using system;

using system.collections.generic;

using system.text;

using system.data;

//工廠類,資料連線類生成器

namespace dbaccess

...else if (mydbtype == "mssqlserver")

...else if (mydbtype == "access")

...else

...}}}

b、生成解決方案,產生dll

c、在另外的工程中引用上面產生的dll

d、使用dll連線資料庫,輸入資料

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

using system.data.oracleclient;

namespace featureinfo

...private dbaccess.factoryclass fac = null;

private dbaccess.dbabstract dba = null;

private void frmread_load(object sender, eventargs e)

...;

if (ftrid != null)

...else

...if (eqid != null)

...else

...if (shortname != null)

...else

...string t = dba.execsql("pro_insertclient", (object)parmas);  

//執行輸入操作,將oracleparameter陣列強制轉換成object陣列做為引數傳入函式}}

}因為當前的要求只是輸入資料,所以只寫了乙個執行insert儲存過程的示例,下次將提供c#連線oracle資料庫執行查詢的資料集返回的示例,希望大家多多指教!

工廠模式連線資料庫

在專案中通常可能會使用不同的資料來源,可能是sql server也可能是access或者是oracle,那麼如何保證在使用不同資料來源的時候,使專案 更改的代價最小呢?對,使用工廠模式.在net1.1的時候,這需要專案實施者自己來完成.在net2.0中,ms已經新增了幾個用於實施工廠模式的類庫.首先...

thinkphp連線多資料庫

在資料庫檔案中設定一下內容 return array 資料庫配置資訊 預設連線這乙個 db type mysql 資料庫型別 db host 127.0.0.1 伺服器位址 db name test1 資料庫名 db user root 使用者名稱 db pwd 密碼 db port 3306,埠 ...

thinkphp連線多資料庫

thinkphp連線多資料庫 配置檔案中 return array 資料庫配置資訊 預設連線這乙個 db type mysql 資料庫型別 db host 127.0.0.1 伺服器位址 db name test1 資料庫名 db user root 使用者名稱 db pwd 密碼 db port ...