Insert dans sql Server avec xml et xds

cs_boubs Messages postés 3 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 avril 2005 - 22 avril 2005 à 12:18
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 25 avril 2005 à 13:51
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

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
22 avril 2005 à 13:10
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
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
22 avril 2005 à 14:50
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..."
cs_boubs Messages postés 3 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 avril 2005
25 avril 2005 à 12:56
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
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
25 avril 2005 à 12:59
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.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
25 avril 2005 à 13:51
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..."
Rejoignez-nous