Reading XML Data Directly
The SqlCommand
class has another method that executes SQL queries, namely
ExecuteXmlReader( )
. ExecuteXmlReader(
)
returns an instance of XmlReader
that
can be used to read the data.
ExecuteXmlReader(
)
is a method of
SqlCommand
and not OleDbCommand
(or the IDbCommand
interface) because it uses the
SQL Server for xml
clause. The result of such a
query is XML, which can then be read using the
XmlReader
instance. Example 11-10
shows a program to read data using ExecuteXmlReader(
)
.
Tip
The XmlReader
returned from
ExecuteXmlReader( )
is actually of the type
XmlTextReader
, because the data returned from the
query is a text stream.
using System; using System.Data.SqlClient; using System.Xml; public class ReadDataAsXml { public static void Main(string [ ] args) { string command = "SELECT name, expiration_date, total_discount " + "FROM coupons, coupon_redemptions, customers " + "WHERE coupons.coupon_code = coupon_redemptions.coupon_code " + "AND coupon_redemptions.customer_id = customers.customer_id " + "FOR XML AUTO"; SqlCommand xmlCommand = new SqlCommand(command, connection); connection.Open( ); XmlReader reader = xmlCommand.ExecuteXmlReader( ); XmlDocument doc = new XmlDocument( ); doc.Load(reader); doc.Save(Console.Out); connection.Close( ); } }
Tip
Like all XmlReader
subclasses, the
XmlReader
returned from
SqlCommand.ExecuteXmlReader( )
keeps the
underlying data source open, which means that the
SqlConnection ...
Get .NET & XML 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.