Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Dit voorbeeld illustreert hoe templatebestanden die bestaan uit SQL- of XPath-queries kunnen worden gespecificeerd door gebruik te maken van de CommandText-eigenschap. In plaats van de SQL- of XPath-query als de waarde van CommandText te specificeren, kun je een bestandsnaam als waarde opgeven. In het volgende voorbeeld wordt de CommandType-eigenschap gespecificeerd als SqlXmlCommandType.TemplateFile.
De voorbeeldapplicatie voert deze sjabloon uit:
<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>
Dit is de C# voorbeeldapplicatie. Om de applicatie te testen, sla je de template op (TemplateFile.xml) en voer je vervolgens de applicatie uit.
Opmerking
In de code moet je de naam van de instantie van Microsoft SQL Server in de verbindingsstring opgeven.
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;
}
}
De toepassing testen
Zorg ervoor dat je het Microsoft .NET Framework op je computer hebt geïnstalleerd.
Sla het XML-sjabloon (TemplateFile.xml) dat in dit voorbeeld wordt geleverd op in een map.
Sla de C#-code (DocSample.cs) die in dit voorbeeld wordt gegeven op in dezelfde map waarin het schema is opgeslagen. (Als je de bestanden in een andere map opslaat, moet je de code bewerken en het juiste directorypad voor het mappingschema opgeven.)
Compileer de code. Om de code in de opdrachtprompt te compileren, gebruik u:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csDit creëert een uitvoerbaar bestand (DocSample.exe).
Voer bij de opdrachtprompt DocSample.exeuit.
Als je een parameter aan een sjabloon doorgeeft, moet de parameternaam beginnen met het teken (@); bijvoorbeeld p.Name="@ContactID", waarbij p een SqlXmlParameter-object is.
Dit is de bijgewerkte template die één parameter neemt.
<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>
Dit is de bijgewerkte code waarin een parameter wordt doorgegeven om het sjabloon uit te voeren.
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;
}