自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#工廠模式的實(shí)現(xiàn)

開發(fā) 后端
本文介紹用swith case語句來實(shí)現(xiàn)不同的創(chuàng)建connection ,command 和adapater的方法,然后說是C#工廠模式的實(shí)現(xiàn)。

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

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

  1. <connectionStrings> 
  2. <addnameaddname="..."connectionString="..."providerName="System.Data.OleDb"/> 
  3.  
  4. <addnameaddname="..."connectionString="..."providerName="System.Data.SqlClient"/> 
  5. </connectionStrings> 

下面看一下使用工廠的這個(gè)類:

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

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

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

【編輯推薦】

  1. C#抽象類-特殊的類
  2. 介紹C#直接插入排序
  3. C#數(shù)據(jù)結(jié)構(gòu)的排序算法
  4. 全面介紹C#指針操作
  5. 概述C#中的Assembly
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2024-07-22 14:34:20

簡單工廠模式C#

2009-08-25 18:04:30

C#實(shí)現(xiàn)Singlet

2024-03-06 13:19:19

工廠模式Python函數(shù)

2011-03-29 09:14:49

Dispose模式C#

2021-03-06 22:50:58

設(shè)計(jì)模式抽象

2011-03-17 15:59:37

c#數(shù)據(jù)庫

2009-09-16 09:06:16

Specificati

2009-08-26 10:24:04

C# Observer

2009-08-31 16:12:02

C#使用Singlet

2011-11-17 16:03:05

Java工廠模式Clojure

2024-11-06 11:38:59

C#單例模式

2009-08-26 09:54:45

C#打印預(yù)覽C#打印

2009-09-01 18:29:10

C#繼承C#多態(tài)

2009-08-03 16:35:30

C#日期比較

2023-03-27 00:20:48

2009-04-29 09:06:18

C#設(shè)計(jì)模式Adapter

2009-09-07 04:59:12

C#模式窗體

2024-07-22 08:09:28

C#模式架構(gòu)

2009-08-11 13:59:41

迭代器模式C# Iterator

2009-08-26 16:26:37

C#迭代器模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號