Fonctions xml de sql server en c#

4/5 (2 avis)

Snippet vu 12 849 fois - Téléchargée 37 fois

Contenu du snippet

SQL Server est capable de renvoyer une requête au format XML grâce aux extensions XML for SQL Server à télécharger sur le site de Microsoft. Comme j'ai trouvé ca par hasard, j'ai eu envie de montrer l'exemple très parlant fourni par MS.

Source / Exemple :


1 - Créer le modèle XSL suivant dans le répertoire de votre appli (qui doit être une application Console... C'est juste pour l'exemple) :

 <?xml version="1.0" encoding="UTF-8" ?> 
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" /> 
- <xsl:template match="*">
  <xsl:apply-templates /> 
  </xsl:template>
- <xsl:template match="Employees">
- <TR>
- <TD>
  <xsl:value-of select="@FirstName" /> 
  </TD>
- <TD>
- <B>
  <xsl:value-of select="@LastName" /> 
  </B>
  </TD>
  </TR>
  </xsl:template>
- <xsl:template match="/">
- <HTML>
- <HEAD>
  <STYLE>th { background-color: #CCCCCC }</STYLE> 
  </HEAD>
- <BODY>
- <TABLE border="1" style="width:300;">
- <TR>
  <TH colspan="2">Employees</TH> 
  </TR>
- <TR>
  <TH>First name</TH> 
  <TH>Last name</TH> 
  </TR>
  <xsl:apply-templates select="root" /> 
  </TABLE>
  </BODY>
  </HTML>
  </xsl:template>
  </xsl:stylesheet>

2 - Voici le code C#, qui va générer un fichier HTML. J'ai copié ici toute ma classe :

class Class1
	{
		static string NorthwindConnString = "Provider=SQLOLEDB;Server=localhost;database=Northwind;Integrated Security=SSPI";
		public static int testXSL()
		{
			//Stream strm;
			SqlXmlCommand cmd = new SqlXmlCommand(NorthwindConnString);
			cmd.CommandText = "select FirstName, LastName from Employees For XML Auto";
			cmd.RootTag = "root";
			using (Stream strm = cmd.ExecuteStream())
				   {
				XmlTextReader reader = new XmlTextReader(strm);
				XPathDocument xd = new XPathDocument(reader, XmlSpace.Preserve);
				XslTransform xslt = new XslTransform();
				xslt.Load("MyXSL.xsl", null);
				XmlTextWriter writer = new XmlTextWriter("xslt_output.html", System.Text.Encoding.UTF8);
		
				xslt.Transform(xd, null, writer);
			}
			return 0;
		}
		public static int Main(String[] args)
		{
			testXSL();   
			return 0;
		}

	}

3 - générer l'application, et la, si tout se passe bien, vous avez un joli fichier HTML dans le répertoire de l'appli

Vous remarquerez dans la requête SQL le : "XML for Auto" à la fin. C'est cette commande qui dit à SQL Server de retourner un résultat au format XML.

A voir également

Ajouter un commentaire Commentaires
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
24 déc. 2004 à 13:09
Salut,

merci... J'en ai fait également un composant que tu pourras trouver sur ASPFR.COM... Par contre le composant ne génère pas de fichier HTML mais un flux. Ca permet de cette façon de créer des pages dynamiques.
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
18 déc. 2004 à 15:56
salut salut stailer,


Superbe ...je vais tester cela de suite ....

Bonne journée

ciao
Christophe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.