新聞中心
上午看到一個(gè)兄弟的文章,很辛苦的想實(shí)現(xiàn)不改代碼只改配置來(lái)訪問(wèn)不同類(lèi)型的數(shù)據(jù)庫(kù),自己去實(shí)現(xiàn)C#工廠模式。精神可嘉,但是殊不知C#已經(jīng)自己為不同類(lèi)型數(shù)據(jù)庫(kù)的訪問(wèn)做了一個(gè)工廠。在這里我就把使用工廠的例子貼出來(lái)供不知道的兄弟參考一下,高手們可以忽略了。

博望網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,博望網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為博望上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的博望做網(wǎng)站的公司定做!
首先是配置文件:其中的providerName就是指定的不同數(shù)據(jù)庫(kù)類(lèi)型
- <addnameaddname="..."connectionString="..."providerName="System.Data.OleDb"/>
- <addnameaddname="..."connectionString="..."providerName="System.Data.SqlClient"/>
下面看一下使用工廠的這個(gè)類(lèi):
- classDataBaseFac
- {
- privateDbConnectioncnn;//抽象類(lèi)型
- privateDbCommandcmd;//抽象類(lèi)型
- privateDbProviderFactoryprovider;
- publicDataBaseFac()
- {
- //從配置文件中取出標(biāo)示數(shù)據(jù)庫(kù)類(lèi)型的字符串
- stringproviderName=ConfigurationManager.ConnectionStrings[1].ProviderName;
- //根據(jù)上一部的結(jié)果工廠創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)例
- provider=DbProviderFactories.GetFactory(providerName);
- //使用該實(shí)例就可以創(chuàng)建對(duì)應(yīng)的connection,command和adapater對(duì)象了
- //調(diào)試的時(shí)候可以看到這幾個(gè)對(duì)象都變成了相應(yīng)于數(shù)據(jù)庫(kù)類(lèi)型的
- cnn=provider.CreateConnection();
- cnn.ConnectionString=ConfigurationManager.ConnectionStrings[1].ConnectionString;
- cmd=provider.CreateCommand();
- cmd.Connection=cnn;
- }
- //執(zhí)行一次查詢,返回?cái)?shù)據(jù)表
- publicDataTableExcuteQuery(stringqueryString)
- {
- DataTableresult=newDataTable();
- DbDataAdapteradapter=provider.CreateDataAdapter();
- cmd.CommandType=CommandType.Text;
- cmd.CommandText=queryString;
- adapter.SelectCommand=cmd;
- try
- {
- cnn.Open();
- adapter.Fill(result);
- }
- catch
- {
- result=null;
- }
- finally
- {
- cnn.Close();
- }
- returnresult;
- }
以上只是簡(jiǎn)單的應(yīng)用,并沒(méi)有做比較高級(jí)的封裝,只供不知道的兄弟參考。
順便說(shuō)說(shuō),上午看到那個(gè)兄弟的文章用swith case語(yǔ)句來(lái)實(shí)現(xiàn)不同的創(chuàng)建connection ,command 和adapater的方法,然后說(shuō)是C#工廠模式的實(shí)現(xiàn)。其實(shí)這是完全錯(cuò)誤的,C#工廠模式的提出就是為了避免這么多swith case造成的麻煩。以后有時(shí)間我會(huì)把幾個(gè)常用的模式的提出原因和應(yīng)用場(chǎng)合總結(jié)一下用C#做幾個(gè)例子給不清楚的兄弟貼出來(lái)的。
網(wǎng)頁(yè)標(biāo)題:C#工廠模式的實(shí)現(xiàn)
本文網(wǎng)址:http://m.5511xx.com/article/djgesip.html


咨詢
建站咨詢
