日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
新手必看篇之ADO.NET2.0數(shù)據(jù)庫(kù)

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

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

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

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

網(wǎng)站題目:新手必看篇之ADO.NET2.0數(shù)據(jù)庫(kù)
分享鏈接:http://m.5511xx.com/article/cdsschd.html