成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

新手必看篇之ADO.NET2.0數據庫

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

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

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

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

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

數據庫

2009-10-28 13:17:34

2011-05-20 13:11:22

ADO.NET

2009-11-03 14:46:47

ADO.NET數據庫

2009-12-31 09:18:23

ADO.NET對象模型

2009-12-22 09:59:06

ADO.NET數據庫

2011-03-04 11:08:46

ADO.NET數據庫

2009-12-23 17:54:01

ADO.NET 2.0

2009-12-30 16:13:52

ADO.NET 2.0

2009-12-24 10:37:03

ADO.NET訪問數據

2009-12-23 15:53:36

ADO.NET訪問數據

2009-03-19 09:58:04

ADO.NET數據庫SQL操作

2009-12-30 15:55:20

ADO.NET數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美高清视频 | 亚洲成人一区二区 | 免费在线a视频 | 亚洲第一成人影院 | 91久久国产综合久久91精品网站 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品一区二区三区四区五区 | 伊人久久综合 | 一区二区三区成人 | 久久99久久 | 国产日韩一区 | 国产高清精品一区 | 国产一级在线 | 欧美久久久久久 | av免费入口 | 在线日韩在线 | 99热这里| 日本精品一区二区三区在线观看 | 国产精品久久一区 | 亚洲成人av | 国产精品久久久久久婷婷天堂 | 国产精品一区二区电影 | 国产高清一区二区三区 | 两性午夜视频 | 久久精品一 | 91色视频在线观看 | 成人片免费看 | 综合激情久久 | 熟女毛片 | 一本色道久久综合亚洲精品高清 | 欧美精品一二三 | 国产免费xxx | 久久午夜精品 | 日韩在线资源 | 亚洲黄色av | 久久精品国产一区 | 国产精品一区一区 | 成人在线小视频 | 国产在线看片 | 国产激情免费视频 | 久久精品99国产精品日本 |