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

新手必看篇之ADO.NET2.0數(shù)據(jù)庫

開發(fā) 后端
這里就ADO.NET2.0數(shù)據(jù)庫訪問工廠中有個DbProviderFactory對象,也就是通常說的DataProvider了,正是這個起了關鍵和方便的作用,是用來創(chuàng)建提供程序?qū)?shù)據(jù)源類的實現(xiàn)的實例(就是用來創(chuàng)建實例)。

ADO.NET2.0還是比較常用的,于是我研究了一下ADO.NET2.0數(shù)據(jù)庫,在這里拿出來和大家分享一下,希望對大家有用。下面開始我要說的利用ADO.NET2.0及以上版本新增的工廠式數(shù)據(jù)庫訪問實現(xiàn)應該系統(tǒng)的無縫切換,要實現(xiàn)無縫切換,當然還是要有前提條件了,就是各個不同的數(shù)據(jù)庫之間的表和其它對象都已經(jīng)成功移植了,沒有這個前提,純用ADO.NET2.0中數(shù)據(jù)庫做系統(tǒng)無縫切換那是不可能的了,比如SQLSERVER中寫的存儲過程,自定義函數(shù)直接復制到ORACLE上就行了嗎?當然是不行,寫法及變量定義要做些調(diào)整才可以成功移植的,還有變結(jié)構(gòu)字段類型等等的都可能是要做相應調(diào)整,這些都做好了才能談系統(tǒng)的無縫切換。

#T#要做的無縫切換,數(shù)據(jù)庫訪問層的代碼中最好(并非絕對)不應該出現(xiàn)SqlCommand,SqlDataAdapter,SqlClient,SqlXXX吧,要切換到ORACLE數(shù)據(jù)上ORACLE里可以OracleCommand,OracleXXX,還有程序執(zhí)行帶參數(shù)語句時,UserName,UserAge,如果在ORACLE里這么命名的話,系統(tǒng)開發(fā)過程中的那種痛苦也許只有經(jīng)歷過的人才知道,ORACLE堅持大寫為標準,記得很久很久以前的一個夏天的晚上,那時我還是年輕的80后,一位數(shù)據(jù)庫設計比較N的人提到過,盡量在數(shù)據(jù)庫設計和T-SQL編程中采用大寫標準,基本上接觸的SQLSERVER數(shù)據(jù)庫較多,也習慣了表名,字段名的大寫設計,后來發(fā)現(xiàn)確實是有道理的。

這里提到的問題都是在下面的各個方法中為了兼容不同的數(shù)據(jù)庫需要面對的問題,具體講到每個執(zhí)行方法時再具體解釋。剛才說SqlCommand,OracleComand都是各自認得,但是DbCommand可是大家都認得的,暫且叫抽象對象吧,還有DbConnection,DbDataAdapter等都是他們都認得的,所以在做支持多數(shù)據(jù)庫訪問類庫時,就可以用這些對象了,根據(jù)這些對象再創(chuàng)建具體對象。ADO.NET2.0數(shù)據(jù)庫訪問工廠中有個DbProviderFactory對象,也就是通常說的DataProvider了,正是這個起了關鍵和方便的作用,是用來創(chuàng)建提供程序?qū)?shù)據(jù)源類的實現(xiàn)的實例(就是用來創(chuàng)建實例)。另外數(shù)據(jù)庫操作還要用到參數(shù)吧,DbParameter,DbParameterCollection下面都需要用到,先貼一段類庫的構(gòu)造函數(shù),因為共用對象需要先實例化。

  1. publicDbConnectionconn;//抽象類型  
  2. privateDbCommandcmd;//抽象類型  
  3. privateDbProviderFactoryprovider;  
  4.  
  5. privateDbParameterPara;//不同數(shù)據(jù)庫參數(shù)類型的抽象類型  
  6. privateDbDataAdapterAdapter;//對應不同數(shù)據(jù)庫的數(shù)據(jù)適配器  
  7.  
  8. Dictionary<Type,String>ParametersFormat;//不同數(shù)據(jù)庫參數(shù)格式化類型  
  9.  
  10. publicstringretParaformat=string.Empty;//最終返回的格式化標志,如@{0},:{0}  
  11. publicDataProviderFactory()  
  12. {  
  13.  
  14. //從配置文件中取出標示數(shù)據(jù)庫類型的字符串并通過ProviderName的不同支持不同類型的數(shù)據(jù)庫  
  15. stringproviderName=ConfigurationManager.ConnectionStrings["ConnStr"].ProviderName;//也可以用索引,從1開始  
  16.  
  17. //創(chuàng)建一個數(shù)據(jù)庫對應的實例,使用該實例就可以創(chuàng)建對應的connection,command和adapater等等對象  
  18. provider=DbProviderFactories.GetFactory(providerName);  
  19.  
  20. //創(chuàng)建具體的數(shù)據(jù)庫連接類型和命令執(zhí)行類型  
  21. conn=provider.CreateConnection();  
  22. conn.ConnectionString=ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;  
  23. cmd=provider.CreateCommand();  
  24. cmd.Connection=conn;  
  25.  
  26. //創(chuàng)建具體的參數(shù)類型  
  27. Para=provider.CreateParameter();  
  28.  
  29. //創(chuàng)建具體的適配器類型  
  30. Adapter=provider.CreateDataAdapter();  
  31.  
  32. //不同數(shù)據(jù)庫參數(shù)前綴格式化  
  33. ParametersFormat=newDictionary<Type,String>();  
  34. ParametersFormat.Add(typeof(System.Data.SqlClient.SqlCommand),"@{0}");//因SQLSERVER只返回{0}沒有@前綴,在此初始化處理  
  35.  
  36. //返回格式化標志  
  37. retParaformat=GetParameterFormat(cmd);  


 

責任編輯:田樹 來源: 博客
相關推薦

2009-12-29 14:18:43

ADO.NET2.0

2009-11-13 15:25:51

ADO.NET的對象

2009-11-04 14:17:34

ADO.NET 2.0

2009-11-11 14:44:27

ADO.NET 2.0

2009-10-29 09:19:59

ADO.NET

2009-11-25 16:45:46

VS2005軟件

2009-09-14 19:58:47

DataSet和Dat

2011-10-09 13:38:14

數(shù)據(jù)庫

2009-10-28 13:17:34

2009-12-22 09:59:06

ADO.NET數(shù)據(jù)庫

2011-03-04 11:08:46

ADO.NET數(shù)據(jù)庫

2009-12-31 09:18:23

ADO.NET對象模型

2009-11-03 14:46:47

ADO.NET數(shù)據(jù)庫

2009-12-23 17:54:01

ADO.NET 2.0

2011-05-20 13:11:22

ADO.NET

2009-12-30 16:13:52

ADO.NET 2.0

2009-12-18 17:06:37

ADO.NET 數(shù)據(jù)庫

2009-11-11 16:15:04

ADO.NET操縱數(shù)據(jù)

2009-12-21 16:36:08

ADO.Net數(shù)據(jù)庫

2009-12-22 13:34:48

ADO.Net Tea
點贊
收藏

51CTO技術棧公眾號