Insert dans sql Server avec xml et xds

Signaler
Messages postés
3
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 avril 2005
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bonjour
j'aimerais inserer des data dans ma BD Sql Server 2000, j'ai un DataSet qui
contient toutes les tables et leurs lignes à inserer. Est ce que quelcun a déja fait cela
dans un projet csharp ? je sais que sql server permet d'executer des requetes a partir de
xml par rapport a un schéma xdr mais dans csharp ce shéma est xsd et comment
executer ca ?
En résumé je cherche un bout de code qui me permet d'inserer dans ma base
mes données se trouvant dans un fichier xml en utilisant un schéma xds.
Merci

bio

5 réponses

Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
salut,

Il faut fair e ca avec une procédure stockée a qui tu passe en parametre une variable de type Ntext.

exemple :
CREATE PROCEDURE maProc
@data Ntext
AS
SET NOCOUNT ON



DECLARE
@hDoc int,
@Trancount int

/*
-----------------------------------------------------------------------------------------------------------------
-- PREPARATION DU DOC XML
-- Chargement du XML dans un document pour analyse
-----------------------------------------------------------------------------------------------------------------
*/
-- On prepare le document XML
EXEC sp_xml_preparedocument
@hDoc OUTPUT,
@data



/*
-----------------------------------------------------------------------------------------------------------------
-- DEBUT DU TRAITEMENT DES PREVISIONS
-- On remplit la table #Employes en parcourant l integralite du document XML
-----------------------------------------------------------------------------------------------------------------
*/


SELECT * INTO maTable
FROM
OPENXML (@hDoc, '/elements/element, 8)
WITH
(
id varchar(10) [mailto:'./@id' './@id'],
value int [mailto:'./@val' './@val']
)


-----------------------------------------------------------------------------------------------------------------
-- FIN DU TRAITEMENT GLOBAL
-- NETTOYAGE DU DOC XML
-----------------------------------------------------------------------------------------------------------------


EXEC sp_xml_removedocument
@hDoc
GO

a supposer que ton doc XML soit de type :
<elements>
<element>

<element>
</elements>

Ceci nécessite néanmoins de connaitre le schéma XSD de tes datatables.

rem : la procédure sp_xml_preparedocument est une fonctionnaliét de SQL serv 7.0
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
tu peux aussi regarder mes sources j'ai des exemple pour ca...


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
3
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 avril 2005

Ta solution supposes que je traite une seule table (?)
dans mon schéma j'ai des relations une à plusieurs et je veux inserer le tout
en utilisant qu'une proédure stockée, est ce qu'il faut déclarer autant de variables
que d'éléments ?

bio
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Soit tu déclare un ficheir XML par table , soit tu envoie ton fichier XML qui représente ton dataset mais dans ce cas tu vas avoir beaucoup plus de traitemetns a faire une fois arrivé dans ta proc.
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
il faut traiter les insert table par table...d'autant plus si tu as des contraintes entre chaque table...


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."