Obtener datos en formato XML desde SQL Server

Microsoft SQL Server 2000 permite usar funciones XML para recuperar datos. El objeto SqlCommand del proveedor de datos de .NET Framework para SQL Server dispone del método ExecuteXmlReader que permite devolver una secuencia XML directamente desde Microsoft SQL Server 2000. ExecuteXmlReader devuelve un objeto System.Xml.XmlReader que contiene los resultados de la instrucción SQL especificada mediante SqlCommand. Para obtener más información acerca de XmlReader, vea XmlReader (Clase). ExecuteXmlReader sólo se puede usar con una instrucción que devuelva resultados en forma de datos XML, como aquéllas que incluyen la cláusula FOR XML de SQL Server 2000, como se muestra en el ejemplo siguiente.

Dim custCMD As SqlCommand = New SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn)

Dim myXR As System.Xml.XmlReader = custCMD.ExecuteXmlReader()
[C#]
SqlCommand custCMD = new SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn);

System.Xml.XmlReader myXR = custCMD.ExecuteXmlReader();

También se puede usar DataSet para escribir datos relacionales como código XML. Además se pueden sincronizar con un XmlDataDocument para proporcionar en tiempo real una vista jerárquica y relacional de un único conjunto de datos almacenado en la memoria. Para obtener más información, vea Llenar un DataSet desde un DataAdapter y XML y DataSet.

Si no hay necesidad de obtener una vista relacional de los datos en memoria con DataSet, el método ExecuteXmlReader es el más adecuado para recuperar datos XML, especialmente cuando se trata de grandes cantidades. Dado que ExecuteXmlReader es una API de secuencias, no necesita recuperar y almacenar en caché todos los datos antes de exponerlos al llamador, como sería el caso si se hubiera utilizado un DataSet para convertir datos relacionales en XML.

Cerrar el XmlReader

Siempre debe llamar al método Close cuando haya terminado de usar el objeto XmlReader. Tenga en cuenta que mientras está abierto un objeto XmlReader, usa de forma exclusiva el objeto Connection. Por tanto, no podrá ejecutar ningún comando en Connection, ni siquiera el de creación de otro XmlReader o DataReader, hasta que se cierre el XmlReader original

Vea también

SqlCommand (Clase) | XmlReader (Clase) | Llenar un DataSet desde un DataAdapter | XML y DataSet