9.11. Filling a DataSet Using an XML Template Query

Problem

You need to fill a DataSet using an XML template query.

Solution

Use the SQL XML Managed classes to use an XML template query to fill a DataSet.

The solution uses one XML file named GetContactQuery.xml, shown in Example 9-18. The solution assumes the file is in the same directory as the solution file FillDataSetXmlTemplateQuery.sln.

Example 9-18. File: GetContactQuery.xml

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

The solution creates a SqlXmlCommand template query and its single SqlXmlParameter object. The parameter is set to the user-specified value. A SqlXmlDataAdapter object is created and executed to fill a new DataSet based on the template query. The result set in the DataSet is output to the console.

The project needs a reference to the assembly Microsoft.Data.SqlXml. If this assembly is not installed on your computer, you can download it from Microsoft Download Center—the URL is http://www.microsoft.com/downloads/details.aspx?FamilyID=51d4a154-8e23-47d2-a033-764259cfb53b&DisplayLang=en as of the writing of this book.

The C# code in Program.cs in the project FillDataSetXmlTemplateQuery is shown in Example 9-19.

Example 9-19. File: Program.cs for FillDataSetXmlTemplateQuery solution

using ...

Get ADO.NET 3.5 Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.