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:
Thesetwostatementsarecompletelyequivalent.BothstatementscreateanewSqlParameterwiththename@firstnameandthevalueFredandaddthenewparametertotheparameterscollectionoftheSqlCommandobject.
NoticethatwedonotspecifytheSQLdatatypeoftheparameterinthecaseofeitherstatement.Ifyoudon'tspecifythedatatype,itisautomaticallyinferredfromthevalueassignedtotheparameter.Forexample,sincethevalueFredisaString,theSQLdatatypeNVarcharisinferred.InthecaseofanOleDbParameter,thedatatypeVarWCharwouldbeautomaticallyinferred.
Insomecases,you'llwanttoexplicitlyspecifythedatatypeofaparameter.Forexample,youmightwanttoexplicitlycreateaVarcharparameterinsteadofanNVarcharparameter.Todothis,youcanusethefollowingstatement:
ThisstatementspecifiestheSQLdatatypeoftheparameterbyusingavaluefromtheSqlDbTypeenumeration.TheSqlDbTypeenumerationislocatedintheSystem.Datanamespace.EachofitsvaluescorrespondstoaSQLdatatype.
InthecaseofanOleDbParameter,youwoulduseavaluefromtheOleDbTypeenumerationlikethis:
TheOleDbTypeenumerationcanbefoundintheSystem.Data.OleDbnamespace.
Finally,youcanspecifythemaximumsizeofadatabaseparameterbyusingthefollowingstatement:
Thisstatementcreatesaparameternamed@lnamewithacolumnsizeof15characters.
Ifyoudon'texplicitlyspecifythemaximumsizeofaparameter,thesizeisautomaticallyinferredfromthevalueassignedtotheparameter.
System.Data.SqlClient—ContainsclassesforconnectingtoMicrosoftSQLServerversion7.0orhigher
System.Data.OleDb—ContainsclassesforconnectingtoadatasourcethathasanOLEDBprovider
System.Data.Odbc—ContainsclassesforconnectingtoadatasourcethathasanODBCdriver
System.Data.OracleClient—ContainsclassesforconnectingtoanOracledatabaseserver
NOTE
Itisexpectedthatadditionaldataprovider-specificnamespaceswillbereleasedovertime.MicrosofthasalreadyreleasedaseparatesetofclassesforworkingwithMicrosoftSQLServerintheCompactFramework,andaseparatesetofclassesforworkingwithXMLgeneratedfromSQLServer2000.Formoreinformationontheseadditionalnamespaces,seethe
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.
相关文章推荐
- ADO.NET Entity Framework 简介
- 4-1 ADO.NET简介
- 跨时代的改进:ADO.NET简介(附图)
- ADO.NET / WCF RIA Services 简介
- [实体框架编程]第一章 ADO.NET实体框架简介(下)
- 4-1 ADO.NET简介 6
- ADO.NET简介
- ADO.NET 简介
- ADO.net简介
- 一步步写自己SqlHelper类库(一):ADO.NET简介
- ADO.NET中的DataReader简介
- C#:ADO.NET简介
- [实体框架编程] 第一章 ADO.NET实体框架简介(下)
- 11-15 ADO.NET简介
- ADO.NET技术简介(二)获取数据库数据DataAdapter、DataReader、DataSet
- 4-1 ADO.NET简介 2
- ADO.NET简介
- [实体框架编程] 第一章 ADO.NET实体框架简介(上)
- ADO.NET技术简介(一) Connection、Command、DataReader、DataAdapter、DataSet和DataTable