Sunteți pe pagina 1din 11

1

IntroductionADO.NET

IntroductionADO.NET
Sommaire
IntroductionADO.NET........................................................................................................................ 1 1 Introduction.....................................................................................................................................2 1.1 1.2 1.3 1.4 2 3 4 QuestcequelADO.NET?...................................................................................................... 2 LesnouveautsdADO.NET..................................................................................................... 2 LesavantagesdADO.NET ........................................................................................................ 2 LesinconvenantsdADO.NET.................................................................................................. 3

Lesfournisseurs............................................................................................................................... 4 Exempledimplmentation............................................................................................................. 6 LINQ.................................................................................................................................................8 4.1 4.2 4.3 QuestcequeLINQ?................................................................................................................ 8 PourquoiLINQ?...................................................................................................................... 8 LesnouveautsduC#3.0........................................................................................................ 8 Typageimplicitedunevariablelocale............................................................................ 9 Expressionslambda....................................................................................................... 10

4.3.1 4.3.2 5

Conclusion.....................................................................................................................................11

10dcembre2008

IntroductionADO.NET

1 Introduction

1.1 QuestcequelADO.NET?
ADO.NET (ActiveX Data Objects.Net) est un ensemble de classes daccs aux donnes compris dans le Framework .NET 3.5. Il permet de grer de faon simplifie et organise des donnes stockes en base (relationnelle ou non), dans des fichiers XML (eXtensible Markup Language) et API (ApplicationProgrammingInterface). ADO.NET permet au dveloppeur de faciliter la manipulation des donnes en tablissant la liaison entre les donnes et lapplication. Il existe 2 modes de connexion: connect et dconnect. Le mode connect donne un accs en permanence aux donnes donc une synchronisation quasi immdiate mais demande une bonne prise en charge du rseau. Le mode dconnect permet de stocker temporairement le rsultat de nos requtes en se connectant juste le temps de la rcupration,delesmodifieretdemettrejourlabaseensereconnectant. ADO.NET nous offre 4 fournisseurs pour accder aux donnes (SQL Server, Oracle, ODBC et OLEDB;quenousdtailleronsdanslecours).CeuxcipeuventpermettredestockerdansunDataSet lesrsultatsdenosrequtes.

1.2 LesnouveautsdADO.NET
LesgrossesnouveautsdADO.NETquivontnousintressersont: lapriseenchargedeSQLServer2008parlefournisseurSQLServer. LINQquipermetderequterdirectementdesdonnesdefaonsimplifieetoptimise. NotammentavecLINQtoDataSetquifaciliteralamanipulationdenotreDataSet. EDM(EntityDataModel)etlEntityFrameworkpermettantdemappernosclassespourles complterautomatiquementavecnosdonnes

Etquelquesautresnouveautsquevouspouvezretrouversurlemsdn.

1.3 LesavantagesdADO.NET
LeplusgrosavantagedADO.NETestsasimplicitdemiseenplacegrceses4fournisseurs offrantunaccsquasidirectavecnosdonnes. ADO.NETpermetdegarderenmmoireunDataSetdeplusieurstablesalorsquADOne pouvaitgarderquunjeudenregistrementnereprsentantquunetableetaugmentantles performances. LinteroprabilitsefaitgrceautransfertdesdonnessurlerseauenXML.Ainsilaseule obligationestlacapacitdelire(et/ouparser)leXML.

10dcembre2008

IntroductionADO.NET

LetypagedirectdunmembrenontypdunDataSet.Ainsi:

//C# if (salaireM > (double)dataSet1.Tables["Employe"].Rows[n]["Salaire"]) VB If salaireM > CType(dataSet1.Tables("Employe").Rows(n)("Salaire"), Double) Then

Deviendra:
//C# if (salaireM > dataSet2.Employe[n].Salaire) VB If salaireM > dataSet2. Employe(n).Salaire Then

1.4 LesinconvenantsdADO.NET
Le plus gros dfaut de ADO.NET est le typage dune requte SQL en string donc sans IntelliSensenicolorationsyntaxiquecequipeutdevenircontraignantavecdegrossesrequtes.

10dcembre2008

IntroductionADO.NET

2 Lesfournisseurs
Comme dit prcdemment, il existe 4 fournisseurs qui sont des interfaces entre votre base et votre code. Chaque fournisseur de donnes permet la communication avec un type de base de donnes au travers dune API. Ces fournisseurs permettent de rcuprer et de transfrer des modificationsentrelapplicationetunebasededonnes.Toutes lesclassespermettantdutiliserces fournisseurssetrouventdanslespacedenomSystem.Data. SurleFramework3.5,ilexistequatretypesdefournisseurs: SqlServer OLEDB OBDC Oracle

Chaque fournisseur est reli une base de donnes propre, c'estdire quil est compatible lAPI de sa base de donnes. Cependant, 2 sont spcifiques: SQL Server pour les bases SQL Server et Oracle pour les bases Oracle. Les 2 autres sont plutt gnriques car sadaptent ncessitant cependantuneinstallationlogicielle.

10dcembre2008

IntroductionADO.NET

Fournisseur SQLServer

Description Lesclassesdecefournisseursetrouventdanslespacedenom System.Data.SqlClient,chaquenomdecesclassesestprfixparSql. SQLServeraccsauserveursansutiliserdautrescoucheslogicielles lerendantplusperformant. Lesclassesdecefournisseursetrouventdanslespacedenom System.Data.OleDb,chaquenomdecesclassesestprfixparOleDb. CefournisseurexigelinstallationdeMDAC(MicrosoftDataAccess Components).Lavantagedecefournisseurestquilpeutdialoguer avecnimportequellebasededonnesletempsquelepiloteOLEDB estinstall;MaisparrapportSQLserver,OLEDButiliseunecouche logiciellenommeOLEDB.Ilrequiertdoncplusderessources diminuantparconsquentlesperformances. Lesclassesdecefournisseursetrouventdanslespacedenom System.Data.Obdc,chaquenomdecesclassesestprfixparObdc. ToutcommelOLEDB,ODBCexigelinstallationdeMDAC.Ilfonctionne aveclemmeprincipequOLEDBmaisaulieudutiliserunecouche logicielle,ilutiliselepiloteOBDC. Lesclassesdecefournisseursetrouventdanslespacedenom System.Data.OracleClient,chaquenomdecesclassesestprfixpar Oracle.Ilpermetsimplementdeseconnecterunesourcededonnes Oracle.

OLEDB

ODBC

Oracle

Remarque:SQLServeretOraclesonttousdeuxdesfournisseursdedonnesmanags.C'estdire quilssontoptimisspourcertainstypesdebasesdedonnes.

10dcembre2008

IntroductionADO.NET

3 Exempledimplmentation
Voici un extrait de code qui va permettre de lister le nom et le prenom de tous les stagiaires contenusdanslatableStagiairedelabasednFrance(cellecine contientque deuxenregistrements). Lersultatsafficheradanslaconsole. Pour faire fonctionner ce code, vous devrez importer les espaces de noms System.Data et System.Data.SqlClient
//C# // chaine de connexion string connectionString = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"; // requete SQL string requete = "SELECT nom, prenom FROM dnFrance.Stagiaire;"; SqlConnection connection = new SqlConnection(connectionString) SqlCommand command = connection.CreateCommand(); command.CommandText = requete; try { connection.Open(); // ouverture de la connexion SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("{0}\t{1}", reader[0], reader["prenom"]); } reader.Close(); // fermeture de la connexion } catch (Exception ex) { Console.WriteLine(ex.Message); } VB ' chaine de connexion (que nous detaillerons dans le chapitre suivant) Dim connectionString As String = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"; ' requete SQL Dim requete As String = "SELECT nom, prenom FROM dnFrance.Stagiaire;"

' On cre la connexion a une base SQL Server


Using connection As New SqlConnection(connectionString) Dim command As SqlCommand = connection.CreateCommand() command.CommandText = queryString Try connection.Open() ' ouverture de la connexion Dim dataReader As SqlDataReader = command.ExecuteReader() Do While dataReader.Read() Console.WriteLine("{0}" & vbTab & "{1}", _ dataReader(0), dataReader(1)) Loop dataReader.Close()' fermeture de la connexion Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using

10dcembre2008

IntroductionADO.NET

Aprscompilation,vousdevriezobtenirquelquechosecommececi:

10dcembre2008

IntroductionADO.NET

4 LINQ
4.1 QuestcequeLINQ?
Le LINQ, Language Integrated Query, est un modle de programmation permettant dtablir desrequtessurdesdonnesdansnimportequellangageMicrosoft.NET.Ilpermetaudveloppeur daccder des sources de donnes quelconques de manire unique et simplifie. En effet, aucun momentilnyauraitentrerducodeSQLparexemple.CelangageestunenouveautduFramework 3.5etprofitedesamliorationsduC#3.0.

4.2 PourquoiLINQ?
Ilexistedenosjoursplusieurssourcesdedonnes:basededonnes,fichierMicrosoftAccess, fichier Microsoft Excel, fichier XML, etc., chacun possdant une manire spcifique daccs aux donnes.Parexemple,onutilisetrssouventduSQLpouraccderunebasededonnesouencore duDocumentObjectModel(DOM)pourleXML. CesticiquintervientLINQ.Pourfaciliterlamanipulationdedonnestraversunprogramme, vousnedevrezconnaitre plusquunlangage:leLINQ.Atraverssesdiffrentesextensions(quenous aborderons dans diffrents chapitres), il permet un accs universel toute source de donnes facilitantainsilatchedesdveloppeurs. VoicienrsumunepetitenumrationnonexhaustivedesobjectifsdeLINQ. Faciliterlesrecherchesdanstouteslesdonnes. PouvoirbnficierdelIntelliSenseetdelacolorationdeVisualStudio. Eviterlaconnaissancedunemultitudedelangages. Unesyntaxeuniformisequelquesoitlasourcededonnes(partpourcequiestdu XMLquigardeunestructurerelativementspcifique).

4.3 LesnouveautsduC#3.0
Pour tirer pleinement partie du LINQ, il est important de connaitre quelques nouveauts du C#3.0. Je vais vous expliquer celles que nous allons utiliser durant ce tutoriel. (Les dveloppeurs VB.Netpeuventpassercettepartie,vuquilsontdesquivalentsdelonguesdates).

10dcembre2008

IntroductionADO.NET

Typageimplicitedunevariablelocale Avec lapparition de la version 3.0 du C#, un nouveau motcl a t ajout: il sagit de var. Ce motcl permet de ne pas dfinir explicitement le type dune variable dans le code et de laisser cettetcheaucompilateurquidtermineraletypedecellecienfonctionducontexte.
C#

4.3.1

var texte = "texte"; var objet = new { texte = "texte", numero = 12, collection = new Dictionary<int, string>() }; objet.collection.Add(1, texte); Console.WriteLine(objet.collection[1]);

Dans cet exemple, var permet de crer un objet (nom de la variable: objet) de classe anonyme.Lobjetdeclasseanonymeadesattributstypsautomatiquement.Ilssontdfinisentreles accolades en une srie dgalit ( gauche les attributs, droite leurs valeurs) spars par des virgules. Les objets de classe anonyme ne doivent pas tre utiliss comme retour de mthode car cest des objets qui nont pas vraiment de classes dfinies, cest donc principalement un moyen de ranger desvariablesdemaniretemporaire. var ma aussi permis dinstancier un String sans avoir connaitre le type. Lorsque lon instancie avec var, pour que le compilateur sache le type mettre lobjet, on doit imprativement lui associer un contenu typ. Si on essaie dassigner une valeur null une variabledclareaveclemotclvar,uneerreurestgnre:
C#

var variable = null;

Comme vous pouvez le voir dans lextrait de code cidessus, Visual Studio avertit quil y a une erreur dans le code. Si vous pointez le mot variable o se trouve lerreur, Visual Studio vous annoncequilestImpossibledassigner<null>unevariablelocaleimplicitementtype. Enfin sil y a un point important retenir sur lusage du mot cl var cest que les variables instancies avec celuici doivent avoir une valeur sur la mme instruction pour permettre au compilateurdassigneruntypeexplicitelavariable.

10dcembre2008

10

IntroductionADO.NET

Expressionslambda Les expressions lambda sont un moyen simple de faire des mthodes anonymes avec une syntaxe plus rapide et plus claire. La syntaxe des expressions lambda est simple et assez lisible. Ci dessousunexempledexpressionlambda:
C#

4.3.2

(int i)=> { return i++; }

Danscetteexpression,onpeutdistinguer3parties.Lapremire(int i)estlapartiedes variablespassesenparamtrelafonction.Ici,lafonctionattendunevariabledetypeint.La secondepartie,estloprateur=>quipermetdintroduirelecorpsdelafonctionlambda.Enfin, lapartie{ return i++; }estleditcorpsdelafonction.Ici,elleneferaitquincrmenteri puisleretourner. Remarque: Cette mthode dexpression lambda ne peux pas sutiliser seule. Pour plus de dtails, vous pourrez vous reporter au cours contenant LINQ to Objetcs.Il y aura quelques exemplesdecodequiserontexpliqus,notammentsurlutilisationdesexpressionslambda.

10dcembre2008

11

IntroductionADO.NET

5 Conclusion
NousavonsdoncvuqueADO.NETnousoffraitunpaneldenouveautsquinousfaciliteronsla tache. Dansleschapitresvenir,nousverronsles2modes(connectetdconnect)carchacun deuxasesavantagesetinconvnients. NousverronsgalementcommentutiliserlesfournisseursetlesDataSetpouraccderetmodifierle plusrapidementetfacilementpossiblenosdonnesetnousferonsaussilaliaisonavecLINQ(Plus dinformationssurMSDN:http://msdn.microsoft.com/frfr/library/system.linq.aspx)quifaciliterala manipulationdedonnesdansnotreDataSet.

10dcembre2008

S-ar putea să vă placă și