Vous êtes sur la page 1sur 63

ADO.

Net

ADO .Net
Prsentation
LADO.NET permet de reli une application une base de donnes. La nouveaut de lADO.NET par rapport son anctre lADO est la gestion de donnes dans une application dans un environnement dconnect. Ce mode, par rapport au mode connect classique, possde plusieurs avantages et inconvnients. Ces deux modes sont utilisables avec les fournisseurs de base de donnes qui seront cits plus loin dans cette prsentation.

ADO .Net
Les fournisseurs de donnes
Chaque fournisseur de donnes permet la communication avec un type de base de donnes au travers dune API. Une API (Application Programming Interface) est linterface qui permet laccs un logiciel par un autre. Ces fournisseurs permettent de rcuprer et de transfrer des modifications entre lapplication et une base de donnes.

ADO .Net
Les fournisseurs de donnes
Toutes les classes permettant dutiliser ces fournisseurs se trouvent dans lespace de nom System.Data.
Sur le Framework 3.5, il existe quatre types de fournisseurs :

Sql Server OLE DB (Object Linking and Embedding, Database) OBDC (Open Database Connectivity) Oracle

ADO .Net
Les fournisseurs de donnes

ADO .Net
Description des fournisseurs de donnes
SQL Server - Les classes de ce fournisseur se trouvent dans lespace de nom System.Data.SqlClient, - Chaque nom de ces classes est prfix par Sql. - SQL Server a accs au serveur sans utiliser dautres couches logicielles le rendant plus performant.

ADO .Net
Description des fournisseurs de donnes
OLE DB - Localisation des classes : espace de nom System.Data.OleDb - Prfixe des noms de classes : OleDb. - Ce fournisseur exige linstallation de MDAC (Microsoft
Data Access Components). Avantage: Possibilit de dialoguer avec nimporte quelle BD tant que le pilote OLE DB est install Inconvnient: OLE DB utilise une couche logicielle nomme OLE DB donc plus de ressources qui entraine une diminution des performances.

ADO .Net
Description des fournisseurs de donnes
ODBC - Localisation des classes : espace de nom System.Data.Odbc - Prfixe des noms de classes : Odbc. - Exige linstallation de MDAC. - Utilise le pilote ODBC a la place de la couche logicielle.

ADO .Net
Description des fournisseurs de donnes
Oracle - Localisation des classes : espace de nom System.Data.OracleClient. - Prfixe des noms de classes : Oracle. - Permet de se connecter une source de donnes Oracle.
Remarque : SQL Server et Oracle sont tout deux des fournisseurs de donnes manags. C'est--dire quils sont optimiss pour certains types de bases de donnes

ADO .Net
Accder la base de donnes
Pour dialoguer avec la base de donnes, ces fournisseurs implmentent six classes de bases :

Command
Stocke les informations sur la commande et permet son excution sur le serveur de base de donnes.

CommandBuilder
Permet de gnrer automatiquement des commandes ainsi que des paramtres pour un DataAdapter.

ADO .Net
Accder la base de donnes
Connection
Permet dtablir une connexion b une sourcede donnes spcifie.

DataAdapter
Permet le transfert de donnes de la base dedonnes vers l'application et inversement (par exemple pour une mise jour, suppression ou modification de donnes). Il est utilis en mode dconnect

ADO .Net
Accder la base de donnes
DataReader
Permet un accs en lecture seule une source de donnes.

Transaction
Reprsente une transaction dans le serveur de la base de donnes.
Remarque : La classe Connection napparat pas dans le Framework 3.5. En effet, les classes des fournisseurs manags ont leur propre classe tel que SqlConnection.

ADO .Net
Implmentation
Les six classes prcdentes implmentent leurs interfaces respectives : IDataAdapter :
Permet de remplir et actualiser un objet DataSet et de mettre jour une source de donnes.

IDataReader :
Permet de lire un ou plusieurs flux de donnes en lecture seule la suite de lexcution dune commande.

ADO .Net
Implmentation
IDataParameter :
Permet dimplmenter un paramtre pour une commande.

IDbCommand :
Permet de donner une commande qui sexcutera au moment de la connexion une source de donnes.

IDbConnection :
Reprsente une connexion unique avec une source de donnes.

ADO .Net
Implmentation
IDataParameter :
Permet dimplmenter un paramtre pour une commande.

IDbCommand :
Permet de donner une commande qui sexcutera au moment de la connexion une source de donnes.

IDbConnection :
Reprsente une connexion unique avec une source de donnes.

ADO .Net
Exemple
VB
Imports System.Data; Imports System.Data.Common; Imports System.Data.SqlClient; Sub Main() Dim requete, connexionString As String connexionString = "Data Source=R1124-01698;Initial Catalog=N0rthwind;Integrated Security=true;//Nom ou adresse rseau du serveur; Nom BD; Login non requis requete = "SELECT * FROM Employes" Dim connexion As IDbConnection = New SqlConnection(connexionString) Dim commande As IDbCommand = connexion.CreateCommand() commande.CommandText = requete commande.CommandType = CommandType.Text connexion.Open() Dim lire As IDataReader = commande.ExecuteReader() Console.WriteLine("ID : | Nom : | Prenom : | Titre); While (lire.Read()) Console.WriteLine("{0} | {1} | {2} | {3}", lire.GetInt32(O),lire.GetString(1),lire["Prenom"],lire["Role"]); End While connexion.Close() connexion.Dispose() Console.ReadLine() End Sub

ADO .Net
//C#

Exemple

using System.Data; using System.Data.Common; using System.Data.SqlClient; static void Main(string[] args){ string requete, connexionString; connexionString = @"Data Source=R1124-01698;Initial Catalog=N0rthwind;Integrated Security=true;"; //Nom ou adresse rseau du serveur; Nom BD; Login non requis requete = "SELECT * FROM Employes"; IDbConnection connexion = new SqlConnection(connexionString); IDbCommand commande = connexion.CreateCommand(); commande.CommandText = requete; commande.CommandType = CommandType.Text; connexion.Open(); IDataReader lire = commande.ExecuteReader(); Console.WriteLine("ID : | Nom : | Prenom : | Titre); while (lire.Read()) { Console.WriteLine("{0} | {1} | {2} | {3}", lire.GetInt32(O),lire.GetString(1),lire["Prenom"],lire["Role"]); } connexion.Close(); connexion.Dispose(); Console.ReadLine();

ADO .Net
Mode connect vs. Mode dconnect
LADO.NET permet de sparer les actions daccs ou de modification dune base de donnes. En effet, il est possible de manipuler une base de donnes sans tre connect celle-ci, il suffit de se connecter pendant un court laps de temps pour faire une mise jour. Ceci est possible grce au DataSet. Il existe alors deux types de fonctionnements : Le mode connect Le mode dconnect

ADO .Net
Mode connect
Avantages Avec un mode connect, la Connexion permanente : donnes sont toujours jour. - Facilite de voir quels sont les utilisateurs connects et sur quoi ils travaillent. - Gestion simple: connexion au dbut de lapplication puis dconnexion la fin. Inconvnients - Utilisation des ressources (Rseau / Serveur ): tous les utilisateurs ont une connexion permanente avec le serveur. Mme si lutilisateur ny fait rien la connexion gaspille beaucoup de ressource entrainant aussi des problmes daccs au rseau.

ADO .Net
Mode non connect
Avantages -Possibilit de brancher un nombre important dutilisateurs sur le mme serveur. - Connexions moins frquentes pour la plus courte dure possible. - Lapplication gagne en performance par la disponibilit des ressources pour les connexions. Inconvnients - Donnes ne sont pas jour, tout temps. - Possibilit de conflits lors des mises jour. - Il faut aussi penser prvoir du code pour savoir ce que va faire lutilisateur en cas de conflits.

ADO .Net
Les chanes de connexions
Pour ouvrir cette connexion il faut dabord dclarer une variable, ici ce sera connexion
VB Dim connexion As SqlConnection //C# SqlConnection connexion

ADO .Net
Les chanes de connexions
La proprit ConnectionString permet dindiquer les paramtres de connexion.
VB

connexionString = "Data Source=R1124-01698;Initial Catalog=N0rthwind;Integrated Security=true//Nom ou

adresse rseau du serveur; Nom BD; Login non requis


//C#

connexionString = @"DataSource=R112401698;Initial Catalog=N0rthwind;IntegratedSecurity=true;";

ADO .Net
Les chanes de connexions
Paramtres de chanes de connexions Connect Timeout Indique le temps dattente de connexion en seconde. Ce laps de temps dpass, une exception est leve. Connection LifeTime Indique la dure de vie dune connexion dans un pool, la valeur 0 (zro) correspond linfini. Connection Reset Indique si la connexion a t rinitialise lors de son retour dans un pool. Data Source Indique le nom ou ladresse rseau du serveur.

ADO .Net
Les chanes de connexions
Paramtres de chanes de connexions (suite ) Initial Catalog Indique le nom de la base de donnes o lapplication doit se connecter. Integrated Security Indique sil faut un nom et un mot de passe. Si la valeur et sur False, un login et password seront demands. Max Pool Size Indique le nombre maximum de connexion dans un pool. Par dfaut, le nombre maximum de connexions est 100.

ADO .Net
Les chanes de connexions
Paramtres de chanes de connexions (suite )

Min Pool Size Indique le nombre minimum de connexion dans un pool. Persist Security Info Indique si le nom et le mot de passe est visible par la connexion. Pwd Indique le mot de passe associ au compte SQL Server. Pooling Indique si une connexion peut tre sortie dun pool. User ID Indique le nom du compte SQL Server.

ADO .Net
Les chanes de connexions
Verification d'tat de connexion Afin de vrifier ltat dune connexion, ADO.NET propose lnumration ConnectionState qui possde les proprits Broken Permetdesavoirsilaconnexionestinterrompue,cetteconnexionpeux sefermerpuisserouvrir. Closed Permetdesavoirsilobjetconnexionestferm. Connecting Permetdesavoirsilobjetconnexionestencoursdeconnexion.

ADO .Net
Les chanes de connexions
Verification d'tat de connexion Proprits de ConnectionState (suite..) Executing Permetdesavoirsiunecommandeestentraindesexcuter. Fetching Permetdesavoirsilobjetconnexionestentraindercuprerdes donnes. Open Permetdesavoirsilobjetconnexionestouvert.

ADO .Net
Les chanes de connexions
Verification d'tat de connexion

ADO .Net
Verification d'tat de connexion ASP.Net (Accs local)

ADO .Net
Verification d'tat de connexion ASP.Net (Accs local)
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Web; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Data; usingSystem.Data.Common; usingSystem.Data.SqlClient; namespaceWebApplication3 { publicpartialclassWebForm1:System.Web.UI.Page { SqlConnectionconnection=newSqlConnection("server=R112401698;Database=N0rthwind;integratedsecurity=false;UserID=Martin;Pwd=password123"); protectedvoidPage_Load(objectsender,EventArgse) { } protectedvoidButton1_Click(objectsender,EventArgse) { try { connection.Open(); TextBox1.Text="ConnectaN0rthwindsurR112401698"; }

catch(Exceptionex)
{

TextBox1.Text="Erreurdeconnexion:"+ex.Message;
} } protectedvoidButton2_Click(objectsender,EventArgse) { connection.Close(); connection.Dispose(); TextBox1.Text="DonnectdeN0rthwindsurR112401698"; } } }

ADO .Net
Verification d'tat de connexion ASP.Net (Accs Client/Serveur)

USE N0RTHWIND; CREATE LOGIN Martin WITH PASSWORD = 'password123'; CREATE USER Martin FOR LOGIN Martin; GRANT CONNECT TO Martin;

ADO .Net
Verification d'tat de connexion ASP.Net
SqlConnectionconnection=newSqlConnection("server=R1124 01698;Database=N0rthwind;integratedsecurity=false;UserID=Martin;Pwd=password123"); protectedvoidPage_Load(objectsender,EventArgse) { } protectedvoidButton1_Click(objectsender,EventArgse) { try { connection.Open(); TextBox1.Text="MartinConnectaN0rthwindsurR112401698"; } catch(Exceptionex) { TextBox1.Text="Erreurdeconnexion:"+ex.Message; } } protectedvoidButton2_Click(objectsender,EventArgse) { connection.Close(); connection.Dispose(); TextBox1.Text="MartinDconnectdeN0rthwindsurR112401698"; }

ADO .Net
Mode connect
Les Commandes Contrairementunebasededonnes,lesrequtesSQLetles procduresstockessontexcutespartirdecommandes.
SqlCommand commande= new SqlCommand();

Lescommandescontiennenttouteslesinformationsncessairesleur excutioneteffectuentdesoprationstellesque: Crerdesdonnes Afficherdesdonnes Modifierdesdonnes Supprimerdesdonnesdunebasededonnes.

ADO .Net
Mode connect
Les Commandes Il existe plusieurs proprits et mthodes communes chaque fournisseur pour grer des commandes, voici les principales : CommandText PermetdedfinirlinstructionderequtesSQLoudeprocdures stockesexcuter.LilapropritCommandType. CommandTimeout Permetdindiquerletempsensecondesavantdemettrefin lexcutiondelacommande.

ADO .Net
Mode connect
Les Commandes Proprits des commandes (Suite ..) CommandType Permetdindiqueroudespcifierlamaniredontlaproprit CommandText doittreexcute. Connection Permet dtablit une connexion.

ADO .Net
Mode connect
Les Commandes Proprits des commandes (Suite ..) Parameters Cestlacollectiondesparamtresdecommandes.Lorsdelexcution derequtesparamtresoudeprocduresstockes,vousdevez ajouterlesparamtresobjetdanslacollection. Transaction PermetdedfinirlaSqlTransaction danslaquellelaSqlCommand sexcute.

ADO .Net
Mode connect
Les Commandes Mthodes des commandes Cancel Permetdetenterlannulationdelexcutiondunecommande. ExecuteNonQuery Permetdexcuterdesrequtesoudesprocduresstockesquine retournentpasdevaleurs. ExecuteReader Permetdexcuterdescommandesetlesretournesousformede tableaudedonnes(oudeslignes)

ADO .Net
Mode connect
Les Commandes Mthodes des commandes (Suite ..) ExecuteScalar Permetdexcuterlesrequtesoulesprocduresstockesen retournantunevaleurunique. ExecuteXMLReader PermetderetournerlesdonnessousleformatXML.

ADO .Net
Mode connect
Les Commandes Evnements des commandes Disposed Permetdappelerladerniremthodeavantquelobjetnesoitdtruit. StatementCompleted (seulement pourSqlCommand) Seproduitlorsquelexcutionduneinstructionsetermine.

ADO .Net
Mode connect
Les Commandes Unefoislaconnexiontablie,laclasseSqlCommand permetdappeler lamthodeCreateCommand quipermettralexcutionde commandesSQL.Ilexistetroismthodesafindecrerunecommande: 1 utilisant un des constructeurs de la classe SqlCommand.
VB

Dim commande As SqlCommand = New SqlCommand() commande.Connection = connexion commande.CommandText = "SELECT * FROM Employes"
//C#

SqlCommand commande= new SqlCommand(); commande.Connection = connexion; commande.CommandText = "SELECT * FROM Employes";

ADO .Net
Mode connect
Les Commandes 2 utilisant un constructeur surcharg,
VB

commande = New SqlCommand("SELECT * FROM Employe", connexion)


//C#

commande = new SqlCommand("SELECT * FROM Employe", connexion);

ADO .Net
Mode connect
Les Commandes 3 utilisant la mthode CreateCommand de l'objet de connexion
VB

Dim commande As SqlCommand = connexion.CreateCommand() commande.CommandText = "SELECT * FROM Employe"


//C#

SqlCommand commande = connexion.CreateCommand(); commande.CommandText = "SELECT * FROM Employe";

ADO .Net
Mode connect
Les Commandes Lefonctionnementpourexcuteruneprocdurestockeestquasiment identiquelexcutiondunerequteSQLclassique.Ilfautquela propritCommandText contiennelenomdelaprocdure,parcontre lapropritCommandType doitprendrelavaleurStoredProcedure aulieudeText.
//C#

string requete = "NomDeLaProcedureStockee"; command.CommandText = requete; command.CommandType = CommandType.StoredProcedure;

ADO .Net
Mode connect
Exemples : CREATE PROCEDURE SPSelectEmploye @Ville_emp NVARCHAR(10) AS SELECT NomFamille, Prenom, Titre, Ville, Pays, DateNaissance, DateDEembauche FROM Employes WHERE Ville = @Ville_emp GO
EXECUTE SPSelectEmploye 'Seattle'

VB

ADO .Net

Dim connexion As SqlConnection = New SqlConnection(" Data Source=R112401698;InitialCatalog=N0rthwind;IntegratedSecurity=true") Dim Command As SqlCommand = connexion.CreateCommand() connexion.Open() Dim ville As String Dim requete As String = "SPSelectEmploye" Command.CommandText = requete Command.CommandType = CommandType.StoredProcedure Console.WriteLine("Quel est la ville de lemploye ?") ville = Console.ReadLine() Dim paramVile As SqlParameter = New SqlParameter("@Ville_emp", ville) Command.Parameters.Add(paramVille) Dim lecture As IDataReader = Command.ExecuteReader() While (lecture.Read()) Console.WriteLine(Nom : {0} Prenom : {1} Titre: {2} Ville : {3}", lecture.GetString(0), lecture.GetString(1), lecture("Titre"), lecture("Ville") ) End While connexion.Close() connexion.Dispose()

ADO .Net
//C#

SqlConnection connexion =newSqlConnection(@"DataSource=R1124 01698;InitialCatalog=N0rthwind;IntegratedSecurity=true;"); SqlCommand command=connexion.CreateCommand(); connexion.Open(); stringville;stringrequete ="SPSelectEmploye"; command.CommandText =requete; command.CommandType =CommandType.StoredProcedure; Console.WriteLine ("Quelestlavilledelemploye ?"); ville=Console.ReadLine(); SqlParameter paramVille =newSqlParameter("@Ville_emp",ville); command.Parameters.Add(paramVille); IDataReader lecture=command.ExecuteReader(); Console.WriteLine("Nom:Prenom :Titre:Ville:"); while (lecture.Read()){ Console.WriteLine("{0}{1}{2}{3}", lecture.GetString(0),lecture.GetString(1),lecture["Titre"], lecture["Ville"]); } connexion.Close(); connexion.Dispose(); Console.ReadLine();

ADO .Net
Exercices:

1 Refairelapplicationprcdentedans l'environnementGUIC#. (voirsurpostedetravaillaprochainesance) 2 CreruneapplicationConsoleutilisantune procdurestockequiaffichelesemploysdunpays donneetayantuntitredonn. (remettreviaLEA)

ADO .Net
VB - Utilisations de parametres pour la modification de donnees

Dim connexion As SqlConnection = New SqlConnection("Data Source=.\SQLServeur;Initial Catalog= N0rthwind;Integrated Security=true") Dim Command As SqlCommand = connexion.CreateCommand() Dim nom, prenom, requete, titre As String Console.WriteLine("Entrez les donnes suivantes :" + vbNewLine) Console.WriteLine("Nom : ") nom = Console.ReadLine() Console.WriteLine(vbNewLine + "Prenom : ") prenom = Console.ReadLine() Console.WriteLine(vbNewLine + "Titre : ") titre= Console.ReadLine() requete = "INSERT INTO Employe VALUES(@nom, '" + prenom + "'," + titre+ ")" Dim param As SqlParameter = New SqlParameter("@nom", nom) Permet de paramtrer "nom" Command.Parameters.Add(param) Ajoute le paramtre param la collection Parameters Command.CommandText = requete connexion.Open() Dim nbrEnregistrementAffecte As String = Command.ExecuteNonQuery().ToString() Console.WriteLine(vbNewLine + nom + " " + prenom + " " + Titre+ " a ete ajoute.") Console.WriteLine("Il y a " + nbrEnregistrementAffecte + " enregistrement(s) affecte par la requete")

ADO .Net
//C#

SqlConnection connexion =newSqlConnection(@"DataSource=R112401698;Initial Catalog=N0rthwind;IntegratedSecurity=true;"); SqlCommand command=connexion.CreateCommand(); stringnom,prenom,titre,requete; Console.WriteLine("Entrezlesdonnessuivantes:\n"); Console.WriteLine("Nom:"); nom=Console.ReadLine(); Console.WriteLine("\nPrenom :"); prenom =Console.ReadLine(); Console.WriteLine("\nTitre :"); titre=Console.ReadLine(); requete ="INSERTINTOEmployes(NomFamille,Prenom,Titre)VALUES(@nom,'"+ prenom +"',"+titre+")"; SqlParameter param =newSqlParameter("@nom",nom); //Permetdeparamtrer"nom" command.Parameters.Add(param); //Ajouteleparamtreparam lacollectionParameters command.CommandText =requete;connexion.Open(); Console.WriteLine("\n"+nom+""+prenom +""+titre+"aete ajoute."); Console.ReadLine();

ADO .Net
Mise a jour en mode connect : INSERTION
SqlConnection connexion=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=D:\BD\N0rthwind.mdf'; Integrated Security=True;Connect Timeout=30;UserInstance=True"); stringnom,prenom,titre,RqInsertion,RqSelection; Console.WriteLine("Entrezlesdonnessuivantes:\n"); Console.WriteLine("Nom:"); nom=Console.ReadLine(); Console.WriteLine("\nPrenom :"); prenom =Console.ReadLine(); Console.WriteLine("\nTitre :"); titre=Console.ReadLine(); RqInsertion ="INSERTINTOEmployes(NomFamille,Prenom,Titre)VALUES('"+nom+"','"+prenom +"','"+ titre+"')"; Console.WriteLine("\n"+RqInsertion); connexion.Open(); SqlCommand commandeIns =newSqlCommand(RqInsertion,connexion); commandeIns.ExecuteNonQuery(); Console.WriteLine("\nMiseajourrealisee avecsucces"); Console.WriteLine("\nVERIFICATIONSURLABD\n"); RqSelection ="select*from employes"; IDbCommand commandeSel =connexion.CreateCommand(); commandeSel.CommandText =RqSelection; commandeSel.CommandType =CommandType.Text; IDataReader lire=commandeSel.ExecuteReader(); Console.WriteLine("\nCode Employe".ToString().PadRight(16)+"Nom".ToString().PadRight(15)+ "Prenom".ToString().PadRight(15)+"Titre".ToString().PadRight(15)); while (lire.Read()) { Console.WriteLine("{0}{1}{2}{3}",lire.GetInt32(0).ToString().PadRight(15), lire.GetString(1).ToString().PadRight(15),lire.GetString(2).PadRight(15),lire.GetString(3).PadRight(15)); } connexion.Close(); Console.ReadLine(); }

ADO .Net
Mise a jour en mode connect : UPDATE
SqlConnection connexion=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename= 'T:\CEGEP\BD\N0rthwind.mdf';Integrated Security=True;Connect Timeout=30;UserInstance=True"); stringnom,ntitre,RqModif,RqSelection; Console.WriteLine("Entrezlesdonnessuivantes:\n"); Console.WriteLine("Nomdel'employe amettreajour:"); nom=Console.ReadLine(); Console.WriteLine("\nNouveau Titredel'employe :"); ntitre =Console.ReadLine(); RqModif ="UPDATEEmployes SETtitre='"+ntitre +"'WHERENomFamille ='"+nom+"'"; Console.WriteLine("\n"+RqModif); connexion.Open(); SqlCommand commandeIns =newSqlCommand(RqModif,connexion); commandeIns.ExecuteNonQuery(); Console.WriteLine("\nMiseajourrealisee avecsucces"); Console.WriteLine("\nVERIFICATIONSURLABD\n"); RqSelection ="select*from employes"; IDbCommand commandeSel =connexion.CreateCommand(); commandeSel.CommandText =RqSelection; commandeSel.CommandType =CommandType.Text; IDataReader lire=commandeSel.ExecuteReader(); Console.WriteLine("\nCode Employe".ToString().PadRight(16)+"Nom".ToString().PadRight(15)+ "Prenom".ToString().PadRight(15)+"Titre".ToString().PadRight(15)); while (lire.Read()) { Console.WriteLine("{0}{1}{2}{3}",lire.GetInt32(0).ToString().PadRight(15), lire.GetString(1).ToString().PadRight(15),lire.GetString(2).PadRight(15),lire.GetString(3).PadRight(15)); } connexion.Close(); Console.ReadLine();

ADO .Net
Mise a jour en mode connect : DELETE
SqlConnection connexion=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename= 'T:\CEGEP\BD\N0rthwind.mdf';Integrated Security=True;Connect Timeout=30;UserInstance=True"); stringnom,ntitre,RqSupp,RqSelection; Console.WriteLine("Entrezlesdonnessuivantes:\n"); Console.WriteLine("Nomdel'employe asupprimer:"); nom=Console.ReadLine(); RqSupp ="DELETEFROMEmployes WHERENomFamille ='"+nom+"'"; Console.WriteLine("\n"+RqSupp); connexion.Open(); SqlCommand commandeIns =newSqlCommand(RqSupp,connexion); commandeIns.ExecuteNonQuery(); Console.WriteLine("\nSuppressionrealisee avecsucces"); Console.WriteLine("\nVERIFICATIONSURLABD\n"); RqSelection ="select*from employes"; IDbCommand commandeSel =connexion.CreateCommand(); commandeSel.CommandText =RqSelection; commandeSel.CommandType =CommandType.Text; IDataReader lire=commandeSel.ExecuteReader(); Console.WriteLine("\nCode Employe".ToString().PadRight(16)+"Nom".ToString().PadRight(15)+ "Prenom".ToString().PadRight(15)+"Titre".ToString().PadRight(15)); while (lire.Read()) { Console.WriteLine("{0}{1}{2}{3}",lire.GetInt32(0).ToString().PadRight(15), lire.GetString(1).ToString().PadRight(15),lire.GetString(2).PadRight(15),lire.GetString(3).PadRight(15)); } connexion.Close(); Console.ReadLine();

ADO .Net
Mode non connect
Le DataSet LeDataSet eststockdanslespacedenomSystem.Data. Cestuncachededonnesenmmoire:permetdestocker temporairementdesdonnesutilisesuneapplication. ContientlacollectiondobjetsDataTable quipeuventtrelisavecles objetsDataRelation (facultatif). Danslecasdumodedconnect,cetobjetpermetd'importerlapartie dsiredelabasededonnes(rsultatdelarequtedeslection)enlocal.

ADO .Net
Mode non connect
Le DataSet Grceauxobjetsncessairelaconnexionclassique(commandeselect, connectionsstring...)etunDataAdapter,onpeutrelier("Binder")un DataSet surunebasededonne(enlectureetencrituregrceaune mthodedemiseajourdelabasededonne). Grceaumotclforeach,onpeutparcourirdesDataSet oulesrequter enLinq*.

ADO .Net
Mode non connect
*LINQ AcronymedeLanguage INtegrated Query. LINQestuneextensionduframework .NET Permetd'unifieretdesimplifierlesoutilsderequtage surcettemme plateforme(partirdelav3.0). LINQsedclineenplusieursoutils: 1 Linq toObject:requtesurdesobjets. 2 Linq toDataSet,Linq ToSQL,Linq ToEntities :requtesurdes modlesrelationnels,englobantADO.NET 3 Linq toXML:requtessurdesfichiersXML.

ADO .Net
Mode non connect
Le DataSet IlexistedeuxtypesdeDataSet : Typed DataSet :Celapermetdecreruneinstanceduneclasse DataSet djtypedansvotreprojet. Untyped Dataset :Celapermetdecreruneinstanceduneclasse DataSet nontypdelaclasseSystem.Data.DataSet.

ADO .Net
Mode non connect
Le DataSet LeslmentsdunDataSet : Objet Description DataTable Correspondunetable.Contientunecollectionde DataColumn etdeDataRow. DataColumn DataRow Reprsenteunecolonnedelatable. Correspondunenregistrementdelatable.

ADO .Net
Mode non connect
Creation dun DataSet

VB

Dim DSN0rthwind As New DataSet()

//C#

DataSet DSN0rthwind = new DataSet();

ADO .Net
Mode non connect
Ajout de DataTable
VB Dim Employe As New DataTable Dim Produits As New DataTable DSN0rthwind.Tables.Add(Employe) DSN0rthwind.Tables.Add(Produits)
//C#

DataTable Employe = new DataTable(); DataTable Role = new DataTable(); DSN0rthwind.Tables.Add(Employe); DSN0rthwind.Tables.Add(Produits);

ADO .Net
Mode non connect
Le DataAdapter LobjetDataAdapter permetderelierunDataSet unebasede donnes. LeDataAdapter changesuivantlefournisseur(exemple.pourunebase dedonnesSQL,ceseraSqlDataAdapter) Cestgrcecelalapplicationpourracommuniqueraveclabasede donnesetparexemplemettrejourcelleci.

ADO .Net
Mode non connect
Cration dun DataAdapter

VB

Dim N0rthwindAdapter As New SqlDataAdapter("SELECT * FROM Employes", connexion)


//C#

SqlDataAdapter N0rthwindAdapter = new SqlDataAdapter("SELECT * FROM Employes", connexion);

ADO .Net
Mode non connect
Mise a jour en mode non connect : INSERTION
Cration dun DataAdapter string nom, prenom, titre, requete; SqlConnection connexion = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename='D:\NORTHWND1.MDF'; Integrated Security=True;Connect Timeout=30;User Instance=True"); requete = @"select * from employees"; Console.WriteLine("Entrez les donnes suivantes :\n"); Console.WriteLine("Nom : "); nom = Console.ReadLine(); Console.WriteLine("\nPrenom : "); prenom = Console.ReadLine(); Console.WriteLine("\nTitre : "); titre = Console.ReadLine(); try { SqlDataAdapter da = new SqlDataAdapter(); // Creation du Data adapter da.SelectCommand = new SqlCommand(requete, connexion); //Affectation de la requete au data adapter SqlCommandBuilder cb = new SqlCommandBuilder(da); // DataSet ds = new DataSet(); da.Fill(ds, "employees"); DataTable ma_table = ds.Tables["employees"]; // Ajout d'un enregistrement DataRow NouvelleLigne = ma_table.NewRow(); NouvelleLigne["firstname"] = prenom; NouvelleLigne["lastname"] = nom; NouvelleLigne["title"] = titre; ma_table.Rows.Add(NouvelleLigne); //Affichage du contenu du Data Table Console.WriteLine("\nNom".ToString().PadRight(16) + "Prenom".ToString().PadRight(15) + "Titre".ToString().PadRight(15)); foreach (DataRow row in ma_table.Rows) { Console.WriteLine("{0}{1}{2}", row["lastname"].ToString().PadRight(15), row["firstname"].ToString().PadRight(15), row["title"].ToString().PadRight(15)); } da.Update(ds, "employees"); //Modification portee sur la table dans la BD Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Error: " + e); Console.ReadLine(); } finally { Console.WriteLine("\n VERIFICATION SUR LA BD \n"); IDbCommand commande = connexion.CreateCommand(); commande.CommandText = requete; commande.CommandType = CommandType.Text; connexion.Open(); IDataReader lire = commande.ExecuteReader(); Console.WriteLine("\nCode Employe".ToString().PadRight(16)+"Nom".ToString().PadRight(15) + "Prenom".ToString().PadRight(15) + "Titre".ToString().PadRight(15)); while (lire.Read()) { Console.WriteLine("{0}{1}{2}{3}", lire.GetInt32(0).ToString().PadRight(15), lire.GetString(1).ToString().PadRight(15), lire.GetString(2).PadRight(15), lire.GetString(3).PadRight(15)); } Console.ReadLine(); connexion.Close();

Merci
63

Vous aimerez peut-être aussi