您的位置:首页 > 其它

ADO.NET简介

2006-06-03 20:06 399 查看
ADO.NET包括以下几个命名空间:

System.Data.SqlClient—ContainsclassesforconnectingtoMicrosoftSQLServerversion7.0orhigher

System.Data.OleDb—ContainsclassesforconnectingtoadatasourcethathasanOLEDBprovider

System.Data.Odbc—ContainsclassesforconnectingtoadatasourcethathasanODBCdriver

System.Data.OracleClient—ContainsclassesforconnectingtoanOracledatabaseserver

NOTE
Itisexpectedthatadditionaldataprovider-specificnamespaceswillbereleasedovertime.MicrosofthasalreadyreleasedaseparatesetofclassesforworkingwithMicrosoftSQLServerintheCompactFramework,andaseparatesetofclassesforworkingwithXMLgeneratedfromSQLServer2000.Formoreinformationontheseadditionalnamespaces,seethemsdn.microsoft.comWebsite.
OraclehasalsoreleasedtheirownnamespaceforworkingwithOracledatabases.YoucandownloadtheOracleproviderfor.NET(ODP.NET)fromtheOracleWebsite.

WhydidMicrosoftduplicatetheseclasses,creatingdifferentversionsfordifferenttypesofdatabases?Bycreatingseparatesetsofclasses,Microsoftwasabletooptimizetheclasses.
Forexample,theOleDbclassesuseOLEDBproviderstoconnecttoadatabase.TheSQLclasses,ontheotherhand,communicatewithMicrosoftSQLServerdirectlyontheleveloftheTabularDataStream(TDS)protocol.TDSisthelow-levelproprietaryprotocolusedbySQLServertohandleclientandservercommunication.BybypassingOLEDBandODBCandworkingdirectlywithTDS,yougetdramaticperformancebenefits.

NOTE
YoucanusetheclassesfromtheSystem.Data.OleDbnamespacewithMicrosoftSQLServer.YoumightwanttodosoifyouwantyourASP.NETpagetobecompatiblewithanydatabase.Forexample,youmightwantyourpagetoworkwithbothMicrosoftSQLServerandOracle.However,youloseallthespeedadvantagesoftheSQL-andOracle-specificclassesifyouusetheSystem.Data.OleDbnamespace.

ThereareseveralwaysyoucancreateanewparameterandassociateitwithaCommand.Forexample,thefollowingtwostatementscreateandaddanewparametertotheSqlCommandobject:

cmdSelect.Parameters.Add("@firstname","Fred")
cmdSelect.Parameters.Add(NewSqlParameter("@firstname","Fred"))

Thesetwostatementsarecompletelyequivalent.BothstatementscreateanewSqlParameterwiththename@firstnameandthevalueFredandaddthenewparametertotheparameterscollectionoftheSqlCommandobject.
NoticethatwedonotspecifytheSQLdatatypeoftheparameterinthecaseofeitherstatement.Ifyoudon'tspecifythedatatype,itisautomaticallyinferredfromthevalueassignedtotheparameter.Forexample,sincethevalueFredisaString,theSQLdatatypeNVarcharisinferred.InthecaseofanOleDbParameter,thedatatypeVarWCharwouldbeautomaticallyinferred.
Insomecases,you'llwanttoexplicitlyspecifythedatatypeofaparameter.Forexample,youmightwanttoexplicitlycreateaVarcharparameterinsteadofanNVarcharparameter.Todothis,youcanusethefollowingstatement:

cmdSelect.Parameters.Add("@lname",SqlDbType.Varchar).Value="Johnson"

ThisstatementspecifiestheSQLdatatypeoftheparameterbyusingavaluefromtheSqlDbTypeenumeration.TheSqlDbTypeenumerationislocatedintheSystem.Datanamespace.EachofitsvaluescorrespondstoaSQLdatatype.
InthecaseofanOleDbParameter,youwoulduseavaluefromtheOleDbTypeenumerationlikethis:

cmdSelect.Parameters.Add("@lname",OleDbType.Varchar).Value="Johnson"

TheOleDbTypeenumerationcanbefoundintheSystem.Data.OleDbnamespace.
Finally,youcanspecifythemaximumsizeofadatabaseparameterbyusingthefollowingstatement:

cmdSelect.Parameters.Add("@lname",SqlDbType.Varchar,15).Value="Johnson"

Thisstatementcreatesaparameternamed@lnamewithacolumnsizeof15characters.
Ifyoudon'texplicitlyspecifythemaximumsizeofaparameter,thesizeisautomaticallyinferredfromthevalueassignedtotheparameter.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: