日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#工廠模式的實現(xiàn)

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

博望網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,博望網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為博望上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的博望做網(wǎng)站的公司定做!

首先是配置文件:其中的providerName就是指定的不同數(shù)據(jù)庫類型

 
 
 
  1. <addnameaddname="..."connectionString="..."providerName="System.Data.OleDb"/>
  2. <addnameaddname="..."connectionString="..."providerName="System.Data.SqlClient"/>

下面看一下使用工廠的這個類:

 
 
 
  1. classDataBaseFac
  2. {
  3. privateDbConnectioncnn;//抽象類型
  4. privateDbCommandcmd;//抽象類型
  5. privateDbProviderFactoryprovider;
  6. publicDataBaseFac()
  7. {
  8. //從配置文件中取出標示數(shù)據(jù)庫類型的字符串
  9. stringproviderName=ConfigurationManager.ConnectionStrings[1].ProviderName;
  10. //根據(jù)上一部的結(jié)果工廠創(chuàng)建一個對應(yīng)的實例
  11. provider=DbProviderFactories.GetFactory(providerName);
  12. //使用該實例就可以創(chuàng)建對應(yīng)的connection,command和adapater對象了
  13. //調(diào)試的時候可以看到這幾個對象都變成了相應(yīng)于數(shù)據(jù)庫類型的
  14. cnn=provider.CreateConnection();
  15. cnn.ConnectionString=ConfigurationManager.ConnectionStrings[1].ConnectionString;
  16. cmd=provider.CreateCommand();
  17. cmd.Connection=cnn;
  18. }
  19. //執(zhí)行一次查詢,返回數(shù)據(jù)表
  20. publicDataTableExcuteQuery(stringqueryString)
  21. {
  22. DataTableresult=newDataTable();
  23. DbDataAdapteradapter=provider.CreateDataAdapter();
  24. cmd.CommandType=CommandType.Text;
  25. cmd.CommandText=queryString;
  26. adapter.SelectCommand=cmd;
  27. try
  28. {
  29. cnn.Open();
  30. adapter.Fill(result);
  31. }
  32. catch
  33. {
  34. result=null;
  35. }
  36. finally
  37. {
  38. cnn.Close();
  39. }
  40. returnresult;
  41. }

以上只是簡單的應(yīng)用,并沒有做比較高級的封裝,只供不知道的兄弟參考。

順便說說,上午看到那個兄弟的文章用swith case語句來實現(xiàn)不同的創(chuàng)建connection ,command 和adapater的方法,然后說是C#工廠模式的實現(xiàn)。其實這是完全錯誤的,C#工廠模式的提出就是為了避免這么多swith case造成的麻煩。以后有時間我會把幾個常用的模式的提出原因和應(yīng)用場合總結(jié)一下用C#做幾個例子給不清楚的兄弟貼出來的。


當(dāng)前題目:C#工廠模式的實現(xiàn)
網(wǎng)頁地址:http://www.dlmjj.cn/article/djgesip.html