Share via


Exécution de fichiers modèles à l'aide de la propriété CommandText

S’applique à :SQL ServerAzure SQL Database

Cet exemple illustre la façon dont les fichiers de modèle constitués de requêtes SQL ou XPath peuvent être spécifiés à l’aide de la propriété CommandText. Au lieu de spécifier la requête SQL ou XPath comme valeur de CommandText, vous pouvez spécifier un nom de fichier comme valeur. Dans l’exemple suivant, la propriété CommandType est spécifiée en tant que SqlXmlCommandType.TemplateFile.

L'exemple d'application exécute ce modèle :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:query>  
    SELECT TOP 2 ContactID, FirstName, LastName   
    FROM   Person.Contact  
    FOR XML AUTO  
  </sql:query>  
</ROOT>  

Il s’agit de l’exemple d’application C#. Pour tester l'application, enregistrez le modèle (TemplateFile.xml), puis exécutez l'application.

Notes

Dans le code, vous devez fournir le nom du instance de Microsoft SQL Server dans la chaîne de connexion.

using System;  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";  
  
      public static int testParams()  
      {  
         //Stream strm;  
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
         cmd.CommandType = SqlXmlCommandType.TemplateFile;  
         cmd.CommandText = "TemplateFile.xml";  
         using (Stream strm = cmd.ExecuteStream()){  
            using (StreamReader sr = new StreamReader(strm)){  
                Console.WriteLine(sr.ReadToEnd());  
            }  
         }  
  
         return 0;        
      }  
      public static int Main(String[] args)  
      {  
         testParams();     
         return 0;  
      }  
   }  

Pour tester l'application

  1. Vérifiez que Microsoft .NET Framework est installé sur votre ordinateur.

  2. Enregistrez le modèle XML (TemplateFile.xml) fourni dans cet exemple dans un dossier.

  3. Enregistrez le code C# (DocSample.cs) fourni dans cet exemple dans le dossier dans lequel le schéma est stocké. (Si vous stockez les fichiers dans un dossier différent, vous devrez modifier le code et spécifier le chemin d'accès approprié au répertoire pour le schéma de mappage.)

  4. Compilez le code. Pour compiler le code à l'invite de commandes, utilisez :

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs  
    

    Un fichier exécutable (DocSample.exe) est alors créé.

  5. À l'invite de commandes, exécutez DocSample.exe.

Si vous passez un paramètre à un modèle, le nom du paramètre doit commencer par at sign (@) ; par exemple, p.Name="@ContactID », où p est un objet SqlXmlParameter.

Voici le modèle mis à jour qui prend un paramètre.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:header>  
     <sql:param name='ContactID'>1</sql:param>    
  </sql:header>  
  <sql:query>  
    SELECT ContactID, FirstName, LastName  
    FROM   Person.Contact  
    WHERE  ContactID=@ContactID  
    FOR XML AUTO  
  </sql:query>  
</ROOT>  

Voici le code mis à jour dans lequel un paramètre est passé pour exécuter le modèle.

public static int testParams()  
{  
  
   Stream strm;  
   SqlXmlParameter p;  
  
   SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
   cmd.CommandType = SqlXmlCommandType.TemplateFile;  
   cmd.CommandText = "TemplateFile.xml";  
   p = cmd.CreateParameter();  
   p.Name="@ContactID";  
   p.Value = "1";  
   strm = cmd.ExecuteStream();  
   StreamReader sw = new StreamReader(strm);  
   Console.WriteLine(sw.ReadToEnd());  
   return 0;        
}