begin process at 2012 05 27 21:05:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > TRAVAIL SUR LES BASES DE DONNÉES, LES DATASETS ET LES FICHIERS XML

TRAVAIL SUR LES BASES DE DONNÉES, LES DATASETS ET LES FICHIERS XML


 Information sur la source

Note :
7,22 / 10 - par 9 personnes
7,22 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Source .NET ( DotNet ) Classé sous :xml, dataset Niveau :Débutant Date de création :05/12/2003 Date de mise à jour :05/12/2003 15:17:41 Vu / téléchargé :20 653 / 2 824

Auteur : vieuxLion

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

On sait généralement utiliser Visual Studio pour créer une Application Frontale.
On charge les données à partir d'une base de données ou d'un fichier XML et on les remet après modification éventuelle dans leur conteneur. Mais savez vous charger un Dataset à partir d'un Fichier XML et mettre à jour une Table avec ?
C'est ce que propose, entre autre, cet article

Rappelons la technique pour créer une représentation sous la forme de DataGrid du contenu d'une table de Base de Données. :
On recherche la table dans l'explorateur de Serveur (Serveurs SQL/Le Serveur / la DB/ la Table) et on tire la table dans la WinForm, ce qui crée des objets SqlConnection et SqlDataAdapter
On crée ensuite un DataSet typé par le menu Données/Générer le groupe de données et on lui donne le nom de dsMaTable
Reste à déposer un DataGrid sur la WinForm et à paramétrer sa DataSource sur dsMaTable.MaTable

1) Affichage :
Un bouton nommé "Fill" servira à remplir le Dataset à partir de la table. Son code :
dsMaTable.Clear();
//sqlDataAdapter1.AcceptChangesDuringFill = false; //utilisé plus tard
sqlDataAdapter1.Fill(dsMaTable);

2) Modification:
Les modifications faites par l'intermédiaire de la grille peuvent être reportées dans la Table grâce à la méthode Update de l'Adapteur :
Un bouton nommé "UpdateMaTable" fera l'affaire avec le code suivant :
try{sqlDataAdapter1.Update(dsMaTable);}
catch (Exception ex) {MessageBox.Show("Exception : " + ex.Message);}

3) Créer du XML à partir du Dataset:
On peut aisément générer un fichier XML représentant les données de la grille
Un bouton nommé "WriteXML" portera le code suivant :
if (dsMaTable.Tables[0].Rows.Count>0) dsMaTable.WriteXml("MaTable.XML");
else MessageBox.Show("Dataset Vide");

4) Lire du XML dans un Dataset:
Pour l'opération inverse, on utilisera le bouton "LoadXML" suivant :
dsMaTable.Clear();
dsMaTable.ReadXml("MaTable.XML");

5) Mettre à jour une autre Table à partir d'un Dataset:
Maintenant, il reste à charger une Table2 à partir d'un Dataset. Le Dataset peut avoir été chargé à partir d'un fichier XML ou bien d'une autre Table ayant la même structure que la table à charger. On utilisera ce bouton "UpdateTable2" :
if (dsMaTable.Tables[0].Rows.Count==0)
{ MessageBox.Show("Dataset Vide"); return ; }
try { SqlDataAdapter da = new SqlDataAdapter ("Select * from MaTable2", sqlConnection1);
SqlCommandBuilder x = new SqlCommandBuilder (da); sqlConnection1.Open(); da.Update(dsMaTable, "LaTable"); }
finally { sqlConnection1.Close(); }

Remarque :
Attention ! pour pouvoir utiliser correctement la méthode Update de l'Adapteur, il faut absolument comprendre le fonctionnement du Fill et du ReadXML:
- lors d'un Fill : tous les enregistrements (des DataRows) ont un état mis à "Unchanged"
sauf si la ligne suivante est utilisée avant le Fill
sqlDataAdapter1.AcceptChangesDuringFill = false;
auquel cas les enregistrements sont dans l'état "Added"
- lors d'un ReadXML, les enregistrements sont automatiquement à "Added"
Enfin, lors de l'Update, seuls les enregistrements modifiés (Added, Deleted ou Updated) sont pris en compte.

Autre remarque:
La ligne suivante
SqlCommandBuilder x = new SqlCommandBuilder (da);
génère les 3 commandes UPDATE, DELETE et INSERT à partir des infos fournies par le SELECT
Ce sont ces commandes qui sont appelées respectivement lorsqu'un enregistrement du Dataset est trouvé dans l'état "Modified", "Deleted" et "Added"  



 Conclusion

ajout d'un ZIP pour ceux qui préfèrent le tout fait.
Les lignes et remarques importantes sont dans la description

ajout d'un script de génération de DataBase + Tables de Test
ajout d'un scénario de démonstration


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) JEU DE TAQUIN (POUR PDA)
Source avec Zip Source avec une capture Source .NET (Dotnet) ECRIRE EN COULEUR SUR LA CONSOLE
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISER LES 3 TECHNIQUES DE SÉRIALISATION DOTNET ET "VOIR" ...
Source avec Zip Source avec une capture Source .NET (Dotnet) LIRE LE CONTENU DE CONTRÔLES TEXTBOX, RICHEDIT,... D'AUTRES ...
Source .NET (Dotnet) RENDRE STATEFULL UN WEB SERVICE

 Sources de la même categorie

Source .NET (Dotnet) ENTITY FRAMEWORK - AVOIR UN INCLUDE TYPÉ par jesusonline
Source avec Zip APPLICATION BASE DE DONNÉES par pretude
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION DE CLASSES MÉTIERS À PARTIR D'UNE BASE DE DONNÉES par sebmafate
Source avec Zip Source avec une capture Source .NET (Dotnet) C# SQLCE DEMO par DanMor498
Source avec Zip EXPORTATION DE FICHIER CSV VERS UNE TABLE SQLSERVER par imothepe_33

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) VERSIONCHECKER par gta126
Source avec Zip Source avec une capture GESTION DE TACHES par thebigboss
Source avec Zip OUTIL DE VISUALISATION DE L'INDICE BOURSIER par ajkangoud
Source avec Zip Source avec une capture Source .NET (Dotnet) PROJECTMANAGER par dodo7263
Source avec Zip Source avec une capture Source .NET (Dotnet) BRIKABRAK LA BOITE À OUTILS POUR LE DÉVELOPPEUR D'APPLICATIO... par bernie666

Commentaires et avis

Commentaire de gg00xiv le 05/12/2003 12:14:27

elle est ou la source ?

Commentaire de vieuxLion le 05/12/2003 15:27:17

la source a été rajoutée

cet article est ici suite à de nombreuses erreurs faites par la plupart,
- en particulier sur ce site - au sujet des Datasets et de leurs RowState.
Il montre que DB<=>DS<=>XML  reste simple (qques lignes) à condition de connaitre ce RowState.

Commentaire de tkrys le 12/12/2003 17:36:42

Merci pour cette explication fort intéressante !!! et trés instructif !
Si je peux me permettre : comment puis-je faire pour afficher les résultats de la requete, non dans une grille, mais dans de simples TextBox?
Merci d'avance

Commentaire de vieuxLion le 12/12/2003 18:53:34

c'est une excellente question ! merci pour ton intérêt

as tu essayé de placer un textbox, de le rendre multiligne et de code ceci ?

textBox1.Text = dsMaTable.GetXml();

Commentaire de tkrys le 12/12/2003 23:40:18

Essai effectué avec succés.

Je suppose qu'il ne me reste plus qu'a identifier les balises pour récupérer les données susceptibles de m'intéresser.
Je vais toutefois méditer sur ce point car je ne connais pas admirablement bien le XML (pour le moment en tout cas...)

Encore merci pour votre réponse... et le partage de votre culture!




Commentaire de PierrotVB le 14/12/2003 12:10:09

oh, enfin quelqu'un qui devoile la puissance et la souplesse d'ADO.net :)

Mais je pense qu'il nous faudra a tous encore quelques mois pour trouver toutes les "combines", les subtilites et les facilites apportees par ADO.net

Bien joue

Commentaire de jacma le 11/02/2005 14:11:02

Bonjour
Je ne sais pas éxécuter le script SQL, malgré les recherches effectuées. L'aide MSDN indique:
"Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le script que vous souhaitez exécuter, puis sélectionnez Exécuter sur.". Mais je n'ai pas le menu contextuel indiqué.
Merci de votre aide.

Commentaire de jacma le 12/02/2005 11:27:44

Pour exécuter un script SQL comme décrit dans MSDN, il semble qu'il faille être dans un projet de base de données.

Commentaire de Scaythe le 05/04/2005 18:06:58

Lire un fichier XML cela semble facile.
Quelle est la procedure à suivre pour lire le resultat d'une requete XML passer via IIS ?
Je m'explique :
J'ai le fichier schema/template suivant :
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./FeuillesXSL/xslTaille.xsl"?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
  
  <sql:query>
    select 1 as TAG,
       NULL as Parent,@@servername as [Server!1!Nom] for xml explicit
  </sql:query>
  
  
  <sql:query>
  declare @space varchar(255)
  create table #tailleDD ( drive char(1) , Libre int)
  set @space='master.dbo.xp_fixeddrives'
  insert into #tailleDD  exec (@space)
  select 1 as TAG,
       NULL as Parent,
   #tailleDD.drive as [Disque!1!Lecteur],
       #tailleDD.Libre as [Disque!1!Espace]
   from #tailleDD for XML explicit
   </sql:query>
  
</root>

executer dans iis http://localhost/FichierSchema, j'obtiens :

<?xml  version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./FeuillesXSL/xslTaille.xsl"?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  
  <Server Nom="030709-236"/>
  
  <tailleDB Base="CellTech" Taille="9Mo"/><tailleDB Base="Plum" Taille="9Mo"/><tailleDB Base="test" Taille="50Mo"/><tailleDB Base="Total" Taille="69Mo"/>
  
  <Disque Lecteur="C" Espace="11816"/>
  
</root>


comment stocké l'information dans un dataset ??
Scaythe

Commentaire de mac73 le 13/06/2006 17:27:14

Bonjour
je suis débutant en c#
je viens de tester l'application en faisant quelques modifications (j'utilise odbc pour mysql).
le fait est que j'ai une erreur que je n'arrive pas à résolver.
IL remplit bien le dataset avec le bouton fill mais quand j'ajoute une entrée et que je clique sur updateActeurs j'ai une erreur qui dit:
Exception: erreur[23000][mysql][odbc 3.51 driver][mysqld-4.0.20a-debug-log]you have an error in your sql syntax. Check the manual that corresponds to your mysql server version for the right synthax near '; SELECT id, nom, prenom FROM Acteurs WHERE (id=@id)' at line 1.

La ligne en question est:

this.sqlInsertCommand1.CommandText = "INSERT INTO Acteurs(id, nom, prenom) VALUES (@id, @nom, @prenom); SELECT * FROM Acteurs WHERE (id = @id)";

je ne vois pas ou est l'erreur.
pourriez vous m'aider.
merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Gestion xml dans DataGrid [ par Januka ] Bonjour,je souhaiterais gérer un fichier xml au travers d'un datagrid.Je crée donc un Dataset, dans lequel je mets les infos du fichier xml, puis j'at Sauvegarde d'une base de donnees entiere dans un XML en c# [ par soutimo ] Bonjour,Je code en c# sur Visual Studio et j 'ai vu par le forum que la sauvegarde d'un dataset dans un fichier XML est possible.Ce dataset correspond tri xml par dataset [ par kulinicm ] salut,voila j'ai un fishier xml qui contient un ID un nom et un prenomle ficheir et tri&#233; par ID et moi je voudrai le trier par nom.je pens&#233; ReadXML terriblement lent !! [ par digital3d ] Je ne trouve pas de solution concernant une optimization de remplir un DataSet avec un XML, quand je fais NewDataSet.ReadXML(), mon fichier de 4MB XML Synchronisation d'un DataSet avec un XmlDataDocument [ par jimbz ] Chers 'pros' du C#.NET, j'ai besoin de vous. Personnellement je suis amateur et je viens de me lancer ds le C# qui offre (offrira quand je maitriserai Lire un XML avec DataSet.ReadXML() et performance [ par digital3d ] J'essaie de remplir un DataSet avec un XML qui fait 4 MB mais que c'est leeennnnntttt !!!! N'y a t-il pas un moyen de lire plus rapidement un fichier Dataset XML / IIS [ par Scaythe ] Bonjour,&nbsp;&nbsp;&nbsp;Pour tous les exmples qui concernent l'alimentation des datasets via xml, il est &#224; chaque fois question d'un fichier XM Comment écrire à la suite d'un fichier xml ? [ par m0rph3us002 ] Bonsoir !voil&#224; pour le moment j'arrive tr&#232;s bien &#224; rentrer des donn&#233;es dans un fichier xml grace &#224; : DataSet dataSet = new Da Recuperation d un contenu d une balise xml [ par peace50 ] bonjour je suis en train de parser du flux xml(rss) du type "http://blogs.developpeur.org/MainFeed.aspx" et je voudrais recupere le contenu de la bal DataSet vers XML avec un schéma imposé [ par Cydreav ] Bonjour, je voudrais savoir s'il est possible d'imposer le sch&#233;ma de la feuille xml g&#233;n&#233;r&#233;e par la fonction WriteXml() J'ai vu des


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales