日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐

C# 泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐的一個(gè)項(xiàng)目,最開(kāi)始選用的是 MySql 5.0 數(shù)據(jù)庫(kù),項(xiàng)目提交之后,對(duì)方要求換成 MS SQLServer 2000,還好數(shù)據(jù)層操作基本采用的是標(biāo)準(zhǔn)的SQL語(yǔ)句,也未使用存儲(chǔ)過(guò)程,于是將原有的數(shù)據(jù)接入層代碼改寫(xiě)成泛型類,只改了不到一百行代碼,具體的SQL操作語(yǔ)句一句未動(dòng),便實(shí)現(xiàn)了數(shù)據(jù)庫(kù)之間的切換。下面簡(jiǎn)述C#泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐的具體過(guò)程:

數(shù)據(jù)庫(kù)不是很復(fù)雜,因此我采用了兩個(gè)類:

(1) DataProvider 泛型類

 
 
 
  1. public class DataProvider﹤ConnType, CmdType﹥  
  2. where ConnType : IDbConnection, new()  
  3. where CmdType : IDbCommand,new ()  
  4. {  
  5.  

提供數(shù)據(jù)庫(kù)表的Insert,Update,Select,Delete操作。因?yàn)?IDbCommand能夠由 IDbConnection 獲取,其實(shí)只需要有一個(gè)泛型參數(shù)ConnType 的,不過(guò)這樣以來(lái),具體的代碼改動(dòng)比較大,偶就采用了兩個(gè)泛型參數(shù)。

(2)ConnectionPool 泛型類

 
 
 
  1. public class ConnectionPool﹤T﹥  
  2. where T : IDbConnection,new ()  
  3. {  
  4.  

最開(kāi)始沒(méi)在MySql 5.0 中找到對(duì)數(shù)據(jù)庫(kù)連接池的支持,于是自己寫(xiě)了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池。

C# 泛型操作數(shù)據(jù)庫(kù)切換的實(shí)現(xiàn):

下面,就是采用 C# 的NB語(yǔ)法――using:

(1)如果使用 MySql 數(shù)據(jù)庫(kù):

 
 
 
  1. using DataProvider =   
  2.  
  3. DataProvider﹤MySql.Data.MySqlClient.MySqlConnection,   
  4.  
  5. MySql.Data.MySqlClient.MySqlCommand﹥; 

(2)如果使用 SQLServer 數(shù)據(jù)庫(kù):

 
 
 
  1. using DataProvider =   
  2.  
  3. DataProvider﹤System.Data.SqlClient.SqlConnection,  
  4.  
  5.  System.Data.SqlClient.SqlCommand﹥; 

這樣一來(lái),其它地方的代碼一句都不用動(dòng)了。

懶惰是程序員的美德。我的一臺(tái)電腦上裝的是 SQLServer 2000數(shù)據(jù)庫(kù),一臺(tái)電腦上裝的是 MySql數(shù)據(jù)庫(kù),我經(jīng)常一會(huì)在這臺(tái)電腦上干活,一會(huì)在另外一臺(tái)電腦上干活,兩個(gè)電腦上的代碼應(yīng)該一致啊。因此,采用預(yù)編譯指令:

 
 
 
  1. #if MSSQLSERVER  
  2. using System.Data.SqlClient;  
  3. using DataProvider = DataProvider﹤System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand﹥;  
  4. #elif MYSQL  
  5. using MySql.Data;  
  6. using DataProvider = DataProvider﹤MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand﹥;  
  7. #endif 

這樣在編譯時(shí)指定條件編譯符號(hào) " MYSQL " 得到的就是MySql版本的代碼,指定條件編譯符號(hào)" MSSQLSERVER ",得到的就是 SQLServer 版本的代碼。

C# 泛型操作數(shù)據(jù)庫(kù)切換操作的總結(jié):

(1)理論上來(lái)說(shuō),采用反射得到的解決方案更完美,不過(guò)那樣工期會(huì)更長(zhǎng)。

(2)數(shù)據(jù)庫(kù)設(shè)計(jì),偶采用的是免費(fèi)軟件 Toad Data Modeler 免費(fèi)版,里面提供了數(shù)據(jù)庫(kù)切換功能,切換過(guò)去,稍微改動(dòng)改動(dòng)。

(3)這次開(kāi)發(fā)工具采用的全是開(kāi)源軟件或者免費(fèi)軟件,都是超級(jí)好用的東東,感覺(jué)開(kāi)發(fā)速度并不比龐大的收費(fèi)軟件慢。用到的工具如下:

IDE:VS 2005 Express (C++版,C#版,Web開(kāi)發(fā)版),.Net的aspnet命令行編譯工具

版本管理:SVN,小烏龜SVN Client

Shell:Windows Power Shell(這玩意既然出來(lái)了,就要充分利用)

UML建模:StarUML(功能強(qiáng)大的開(kāi)源UML,比偶以前用過(guò)的JUDE,ArgoUML強(qiáng)大很多,支持C#)

數(shù)據(jù)庫(kù)建模:Toad Data Modeler 免費(fèi)版

數(shù)據(jù)庫(kù)管理工具:EMS SQL Manager 2005 lite for MySQL

C# 泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐的基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# 泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐有所幫助。

【編輯推薦】

  1. C# 泛型數(shù)組學(xué)習(xí)小結(jié)
  2. C# 泛型委托學(xué)習(xí)經(jīng)驗(yàn)淺析
  3. 淺析運(yùn)行庫(kù)中的C# 泛型
  4. C# 泛型方法中反射常用方法淺析
  5. C# 泛型應(yīng)用中屬性淺析

網(wǎng)頁(yè)標(biāo)題:C#泛型操作數(shù)據(jù)庫(kù)切換實(shí)踐
網(wǎng)頁(yè)URL:http://www.5511xx.com/article/cdgjhpg.html