Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Xml et base de données

13 réponses
Avatar
David CALDERINI
Bonjour,

Je butte depuis un moment sur ce probl=E8me.

J'ai un fichier xml,
Je souhaite incerer son contenu dans une table qui=20
contient trois columns.

Quelles sont les meilleurs fa=E7ons de faire?

Merci d'avance.

10 réponses

1 2
Avatar
LEBRUN Thomas
Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va pas ?

A+

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"David CALDERINI" a écrit :

Bonjour,

Je butte depuis un moment sur ce problème.

J'ai un fichier xml,
Je souhaite incerer son contenu dans une table qui
contient trois columns.

Quelles sont les meilleurs façons de faire?

Merci d'avance.





Avatar
David CALDERINI
Salut Thomas,

Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais pas
à enregistrer les données de fichier XML dans la base de données.
Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon erreur :).
Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
comment faire.

Merci


"LEBRUN Thomas" a écrit :

Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va pas ?

A+

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"David CALDERINI" a écrit :

> Bonjour,
>
> Je butte depuis un moment sur ce problème.
>
> J'ai un fichier xml,
> Je souhaite incerer son contenu dans une table qui
> contient trois columns.
>
> Quelles sont les meilleurs façons de faire?
>
> Merci d'avance.
>
>
>


Avatar
David CALDERINI
Voici le code que j'utilise,

//Je charge le contenu de mon ficchier XML dans un DataSet.
//Le l'affiche dans un DataGrid.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@ofd.FileName);
ds = new DataSet();
XmlNodeReader xnr = new XmlNodeReader(xmlDoc);
ds.ReadXml(xnr);
dataGrid2.DataSource = ds.Tables[2];

// J'essaye d'ajouter à ma table le contenu du DaSet
string sSQL = "SELECT id,code,nom FROM matable";
dataAdapter2 = new SQLBaseDataAdapter(sSQL, cnx);
dataAdapter2.FillSchema(ds,SchemaType.Source,"matable");
dataAdapter.Fill(ds, "matable");
dataAdapter2.Update(ds,"matable");

J'ai l'erreur:

Une exception non gérée du type 'System.NullReferenceException' s'est
produite dans cnxsqlbase.exe
Informations supplémentaires : La référence d'objet n'est pas définie à une
instance d'un objet.

Sur la ligne:

dataAdapter.Fill(ds, "matable");


Merci d'avance.


"David CALDERINI" a écrit :

Salut Thomas,

Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais pas
à enregistrer les données de fichier XML dans la base de données.
Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon erreur :).
Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
comment faire.

Merci


"LEBRUN Thomas" a écrit :

> Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va pas ?
>
> A+
>
> -------------------
> LEBRUN Thomas
> http://morpheus.developpez.com
>
>
> "David CALDERINI" a écrit :
>
> > Bonjour,
> >
> > Je butte depuis un moment sur ce problème.
> >
> > J'ai un fichier xml,
> > Je souhaite incerer son contenu dans une table qui
> > contient trois columns.
> >
> > Quelles sont les meilleurs façons de faire?
> >
> > Merci d'avance.
> >
> >
> >


Avatar
David CALDERINI
Désolé je m'autocorrige,

l'erreur que j'ai c'est:

Une exception non gérée du type 'System.InvalidOperationException' s'est
produite dans system.data.dll

Informations supplémentaires : Impossible pour Update de trouver
TableMappings['matable'] ou DataTable 'matable'.

"David CALDERINI" a écrit :

Salut Thomas,

Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais pas
à enregistrer les données de fichier XML dans la base de données.
Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon erreur :).
Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
comment faire.

Merci


"LEBRUN Thomas" a écrit :

> Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va pas ?
>
> A+
>
> -------------------
> LEBRUN Thomas
> http://morpheus.developpez.com
>
>
> "David CALDERINI" a écrit :
>
> > Bonjour,
> >
> > Je butte depuis un moment sur ce problème.
> >
> > J'ai un fichier xml,
> > Je souhaite incerer son contenu dans une table qui
> > contient trois columns.
> >
> > Quelles sont les meilleurs façons de faire?
> >
> > Merci d'avance.
> >
> >
> >


Avatar
LEBRUN Thomas
T'as essayé un

dataAdapter.Fill(ds, ds.Tables[2]);

A+

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"David CALDERINI" a écrit :

Voici le code que j'utilise,

//Je charge le contenu de mon ficchier XML dans un DataSet.
//Le l'affiche dans un DataGrid.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@ofd.FileName);
ds = new DataSet();
XmlNodeReader xnr = new XmlNodeReader(xmlDoc);
ds.ReadXml(xnr);
dataGrid2.DataSource = ds.Tables[2];

// J'essaye d'ajouter à ma table le contenu du DaSet
string sSQL = "SELECT id,code,nom FROM matable";
dataAdapter2 = new SQLBaseDataAdapter(sSQL, cnx);
dataAdapter2.FillSchema(ds,SchemaType.Source,"matable");
dataAdapter.Fill(ds, "matable");
dataAdapter2.Update(ds,"matable");

J'ai l'erreur:

Une exception non gérée du type 'System.NullReferenceException' s'est
produite dans cnxsqlbase.exe
Informations supplémentaires : La référence d'objet n'est pas définie à une
instance d'un objet.

Sur la ligne:

dataAdapter.Fill(ds, "matable");


Merci d'avance.


"David CALDERINI" a écrit :

> Salut Thomas,
>
> Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais pas
> à enregistrer les données de fichier XML dans la base de données.
> Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon erreur :).
> Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
> comment faire.
>
> Merci
>
>
> "LEBRUN Thomas" a écrit :
>
> > Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va pas ?
> >
> > A+
> >
> > -------------------
> > LEBRUN Thomas
> > http://morpheus.developpez.com
> >
> >
> > "David CALDERINI" a écrit :
> >
> > > Bonjour,
> > >
> > > Je butte depuis un moment sur ce problème.
> > >
> > > J'ai un fichier xml,
> > > Je souhaite incerer son contenu dans une table qui
> > > contient trois columns.
> > >
> > > Quelles sont les meilleurs façons de faire?
> > >
> > > Merci d'avance.
> > >
> > >
> > >


Avatar
Paul Bacelar
Il n'y a donc pas de table "'matable'" dans ton DataSet.

Pour avoir une table "matable", il faut qu'il y ait un élément XML "matable"
comme fils du noeud racine du XML.

Avec ton XML, ce serait plus simple.

--
Paul Bacelar

"David CALDERINI" wrote in
message news:
Désolé je m'autocorrige,

l'erreur que j'ai c'est:

Une exception non gérée du type 'System.InvalidOperationException' s'est
produite dans system.data.dll

Informations supplémentaires : Impossible pour Update de trouver
TableMappings['matable'] ou DataTable 'matable'.

"David CALDERINI" a écrit :

> Salut Thomas,
>
> Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais


pas
> à enregistrer les données de fichier XML dans la base de données.
> Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon


erreur :).
> Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
> comment faire.
>
> Merci
>
>
> "LEBRUN Thomas" a écrit :
>
> > Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va


pas ?
> >
> > A+
> >
> > -------------------
> > LEBRUN Thomas
> > http://morpheus.developpez.com
> >
> >
> > "David CALDERINI" a écrit :
> >
> > > Bonjour,
> > >
> > > Je butte depuis un moment sur ce problème.
> > >
> > > J'ai un fichier xml,
> > > Je souhaite incerer son contenu dans une table qui
> > > contient trois columns.
> > >
> > > Quelles sont les meilleurs façons de faire?
> > >
> > > Merci d'avance.
> > >
> > >
> > >


Avatar
David CALDERINI
Merci de votre aide,
Voici mon XML (qui contient toute la france)

<ListeLocalites>
- <Localite>
<Id>53491</Id>
<CP>01000</CP>
<Nom>Bourg en Bresse</Nom>
</Localite>
- <Localite>
<Id>53492</Id>
<CP>01000</CP>
<Nom>Brou</Nom>
</Localite>

et dans ma base j'ai une table, appelons la "matable"
qui contient 3 champs id, cp, nom.

Voila voila merci...

"Paul Bacelar" a écrit :

Il n'y a donc pas de table "'matable'" dans ton DataSet.

Pour avoir une table "matable", il faut qu'il y ait un élément XML "matable"
comme fils du noeud racine du XML.

Avec ton XML, ce serait plus simple.

--
Paul Bacelar

"David CALDERINI" wrote in
message news:
> Désolé je m'autocorrige,
>
> l'erreur que j'ai c'est:
>
> Une exception non gérée du type 'System.InvalidOperationException' s'est
> produite dans system.data.dll
>
> Informations supplémentaires : Impossible pour Update de trouver
> TableMappings['matable'] ou DataTable 'matable'.
>
> "David CALDERINI" a écrit :
>
> > Salut Thomas,
> >
> > Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais
pas
> > à enregistrer les données de fichier XML dans la base de données.
> > Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon
erreur :).
> > Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
> > comment faire.
> >
> > Merci
> >
> >
> > "LEBRUN Thomas" a écrit :
> >
> > > Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va
pas ?
> > >
> > > A+
> > >
> > > -------------------
> > > LEBRUN Thomas
> > > http://morpheus.developpez.com
> > >
> > >
> > > "David CALDERINI" a écrit :
> > >
> > > > Bonjour,
> > > >
> > > > Je butte depuis un moment sur ce problème.
> > > >
> > > > J'ai un fichier xml,
> > > > Je souhaite incerer son contenu dans une table qui
> > > > contient trois columns.
> > > >
> > > > Quelles sont les meilleurs façons de faire?
> > > >
> > > > Merci d'avance.
> > > >
> > > >
> > > >





Avatar
David CALDERINI
Sur la base des conseils qui m'ont été donner, j'ai donc renomer
le nom de ma table en "localite" comme dans le xml.
Puis dans le code j'ai mis:

// Requete
string sSQL = "SELECT id,cp,nom FROM localite";
dataAdapter2 = new SQLBaseDataAdapter(sSQL, cnx);
dataAdapter2.Fill(ds);
dataAdapter2.Update(ds);

Donc la je n'ai aucune erreur mais par contre quand je vais vérifier dans la
base,
aucune données n'a été enregistrer.
Faut il un insert ou quelque chose comme ça?

Merci d'avance...

"David CALDERINI" a écrit :

Merci de votre aide,
Voici mon XML (qui contient toute la france)

<ListeLocalites>
- <Localite>
<Id>53491</Id>
<CP>01000</CP>
<Nom>Bourg en Bresse</Nom>
</Localite>
- <Localite>
<Id>53492</Id>
<CP>01000</CP>
<Nom>Brou</Nom>
</Localite>

et dans ma base j'ai une table, appelons la "matable"
qui contient 3 champs id, cp, nom.

Voila voila merci...

"Paul Bacelar" a écrit :

> Il n'y a donc pas de table "'matable'" dans ton DataSet.
>
> Pour avoir une table "matable", il faut qu'il y ait un élément XML "matable"
> comme fils du noeud racine du XML.
>
> Avec ton XML, ce serait plus simple.
>
> --
> Paul Bacelar
>
> "David CALDERINI" wrote in
> message news:
> > Désolé je m'autocorrige,
> >
> > l'erreur que j'ai c'est:
> >
> > Une exception non gérée du type 'System.InvalidOperationException' s'est
> > produite dans system.data.dll
> >
> > Informations supplémentaires : Impossible pour Update de trouver
> > TableMappings['matable'] ou DataTable 'matable'.
> >
> > "David CALDERINI" a écrit :
> >
> > > Salut Thomas,
> > >
> > > Tu te souviens on en avait parler sur MSN de ce problème. Je n'arrivais
> pas
> > > à enregistrer les données de fichier XML dans la base de données.
> > > Je vais mettre mon code au plus vite au cas ou quelqu'un trouve mon
> erreur :).
> > > Je voulais voir si quelqu'un avait un lien, ou un tutorial qui montrait
> > > comment faire.
> > >
> > > Merci
> > >
> > >
> > > "LEBRUN Thomas" a écrit :
> > >
> > > > Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela ne va
> pas ?
> > > >
> > > > A+
> > > >
> > > > -------------------
> > > > LEBRUN Thomas
> > > > http://morpheus.developpez.com
> > > >
> > > >
> > > > "David CALDERINI" a écrit :
> > > >
> > > > > Bonjour,
> > > > >
> > > > > Je butte depuis un moment sur ce problème.
> > > > >
> > > > > J'ai un fichier xml,
> > > > > Je souhaite incerer son contenu dans une table qui
> > > > > contient trois columns.
> > > > >
> > > > > Quelles sont les meilleurs façons de faire?
> > > > >
> > > > > Merci d'avance.
> > > > >
> > > > >
> > > > >
>
>
>


Avatar
David CALDERINI
Encore une auto réponse je touche presque qu'au but,

Voici maintenant mon code qui prend les données d'un fichier xml et qui les
enregistre (du moin qui essaye) dans une base de données.

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@ofd.FileName);

ds = new DataSet();
XmlNodeReader xnr = new XmlNodeReader(xmlDoc);
ds.ReadXml(xnr);
dataGrid2.DataSource = ds.Tables[2];

// Requete
string sSQL = "SELECT id,cp,nom FROM localite";
dataAdapter2 = new SQLBaseDataAdapter(sSQL, cnx);
//dataAdapter2.FillSchema(ds,SchemaType.Source,"comenaos");
dataAdapter2.Fill(ds);
dataAdapter2.Update(ds.Tables[2]);


Maintenant le message d'erreur est :

Une exception non gérée du type 'System.InvalidOperationException' s'est
produite dans system.data.dll

Informations supplémentaires : Update requiert un InsertCommand valide lors
du passage de la collection DataRow avec de nouvelles lignes.

Je sens qu'il ne manque pas grand chose pour réussir.
Merci d'avance...





"David CALDERINI" a écrit :

Bonjour,

Je butte depuis un moment sur ce problème.

J'ai un fichier xml,
Je souhaite incerer son contenu dans une table qui
contient trois columns.

Quelles sont les meilleurs façons de faire?

Merci d'avance.





Avatar
Paul Bacelar
Tes enregistrements (lignes de données) n'ont pas été marqués comme
modifiés.

Donc quant Updates cherche les enregistrements à mettre à jours, à ajouter
et à supprimer, il n'en trouve aucun.
--
Paul Bacelar

"David CALDERINI" wrote in
message news:
Sur la base des conseils qui m'ont été donner, j'ai donc renomer
le nom de ma table en "localite" comme dans le xml.
Puis dans le code j'ai mis:

// Requete
string sSQL = "SELECT id,cp,nom FROM localite";
dataAdapter2 = new SQLBaseDataAdapter(sSQL, cnx);
dataAdapter2.Fill(ds);
dataAdapter2.Update(ds);

Donc la je n'ai aucune erreur mais par contre quand je vais vérifier dans


la
base,
aucune données n'a été enregistrer.
Faut il un insert ou quelque chose comme ça?

Merci d'avance...

"David CALDERINI" a écrit :

> Merci de votre aide,
> Voici mon XML (qui contient toute la france)
>
> <ListeLocalites>
> - <Localite>
> <Id>53491</Id>
> <CP>01000</CP>
> <Nom>Bourg en Bresse</Nom>
> </Localite>
> - <Localite>
> <Id>53492</Id>
> <CP>01000</CP>
> <Nom>Brou</Nom>
> </Localite>
>
> et dans ma base j'ai une table, appelons la "matable"
> qui contient 3 champs id, cp, nom.
>
> Voila voila merci...
>
> "Paul Bacelar" a écrit :
>
> > Il n'y a donc pas de table "'matable'" dans ton DataSet.
> >
> > Pour avoir une table "matable", il faut qu'il y ait un élément XML


"matable"
> > comme fils du noeud racine du XML.
> >
> > Avec ton XML, ce serait plus simple.
> >
> > --
> > Paul Bacelar
> >
> > "David CALDERINI" wrote in
> > message news:
> > > Désolé je m'autocorrige,
> > >
> > > l'erreur que j'ai c'est:
> > >
> > > Une exception non gérée du type 'System.InvalidOperationException'


s'est
> > > produite dans system.data.dll
> > >
> > > Informations supplémentaires : Impossible pour Update de trouver
> > > TableMappings['matable'] ou DataTable 'matable'.
> > >
> > > "David CALDERINI" a écrit :
> > >
> > > > Salut Thomas,
> > > >
> > > > Tu te souviens on en avait parler sur MSN de ce problème. Je


n'arrivais
> > pas
> > > > à enregistrer les données de fichier XML dans la base de données.
> > > > Je vais mettre mon code au plus vite au cas ou quelqu'un trouve


mon
> > erreur :).
> > > > Je voulais voir si quelqu'un avait un lien, ou un tutorial qui


montrait
> > > > comment faire.
> > > >
> > > > Merci
> > > >
> > > >
> > > > "LEBRUN Thomas" a écrit :
> > > >
> > > > > Hum... un DataAdapter, un Dataset et la méthode ReadXml(), cela


ne va
> > pas ?
> > > > >
> > > > > A+
> > > > >
> > > > > -------------------
> > > > > LEBRUN Thomas
> > > > > http://morpheus.developpez.com
> > > > >
> > > > >
> > > > > "David CALDERINI" a écrit :
> > > > >
> > > > > > Bonjour,
> > > > > >
> > > > > > Je butte depuis un moment sur ce problème.
> > > > > >
> > > > > > J'ai un fichier xml,
> > > > > > Je souhaite incerer son contenu dans une table qui
> > > > > > contient trois columns.
> > > > > >
> > > > > > Quelles sont les meilleurs façons de faire?
> > > > > >
> > > > > > Merci d'avance.
> > > > > >
> > > > > >
> > > > > >
> >
> >
> >


1 2