使用 CommandStream 属性执行模板文件
此示例演示如何使用 SqlXmlCommand 对象的 CommandStream 属性指定包含 SQL 或 XPath 查询的模板文件。 在此应用程序中,将为命令文件打开 FileStreamobject,并将文件流分配为执行的 CommandStream。
在以下示例中,CommandType 属性指定为 SqlXmlCommandType.Template(而不是 TemplateFile)。
下面是示例 XML 模板:
<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>
这是示例 C# 应用程序。 若要测试该应用程序,请保存模板 (TemplateFile.xml),然后执行该应用程序。 应用程序将执行在 XML 模板中指定的查询,并在屏幕上显示所生成的 XML 文档。
注意
在代码中,必须在连接字符串中提供Microsoft SQL Server 实例的名称。
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;
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
ms.Position = 0;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandStream = new FileStream("TemplateFile.xml", FileMode.Open, FileAccess.Read);
cmd.CommandType = SqlXmlCommandType.Template;
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;
}
}
测试应用程序
将该示例中提供的 XML 模板 (TemplateFile.xml) 保存在某个文件夹中。
将此示例中提供的 C# 代码(DocSample.cs)保存在存储架构的同一文件夹中。 (如果将文件存储在其他文件夹中,则必须编辑代码并为映射架构指定相应的目录路径。)
编译代码。 若要在命令提示符下编译此代码,请使用:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
这将创建一个可执行文件 (DocSample.exe)。
在命令提示符下,执行 DocSample.exe。