SqlCommand.ExecuteXmlReader Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Envía CommandText a Connection y crea un objeto XmlReader.
public:
System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader ();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader
Devoluciones
Objeto XmlReader.
Excepciones
Se usó un SqlDbType valor distinto de Binary o VarBinary cuando Value se estableció Streamen . Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
o bien
Un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml se usó cuando Value se estableció TextReaderen .
o bien
Se usó un SqlDbType valor distinto de Xml cuando Value se estableció en XmlReader.
Se produjo una excepción al ejecutar el comando contra una fila bloqueada. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.
o bien
Se agotó el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
La SqlConnection se cerró o se interrumpió durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
Se produjo un error en un objeto Stream, XmlReader o TextReader durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
El objeto Stream, XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
Ejemplos
En el ejemplo siguiente se crea y SqlCommand , a continuación, se ejecuta mediante ExecuteXmlReader. El ejemplo se pasa una cadena que es una instrucción SELECT for XML de Transact-SQL y una cadena que se va a usar para conectarse al origen de datos.
private static void CreateXMLReader(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
System.Xml.XmlReader reader = command.ExecuteXmlReader();
}
}
Public Sub CreateXMLReader(ByVal queryString As String, _
ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand(queryString, connection)
Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
End Using
End Sub
Comentarios
XmlReader devuelto por este método no admite operaciones asincrónicas.
Normalmente, la CommandText propiedad especifica una instrucción Transact-SQL con una cláusula FOR XML válida. Sin embargo, CommandText también puede especificar una instrucción que devuelva ntext
datos o nvarchar
que contengan XML válidos o el contenido de una columna definida con el xml
tipo de datos.
Se puede dar formato a una consulta típica ExecuteXmlReader como en el siguiente ejemplo de Microsoft Visual C#:
SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);
Este método también se puede usar para recuperar un conjunto de resultados de una sola fila y una sola columna que contiene datos XML. En este caso, si se devuelve más de una fila, el ExecuteXmlReader método adjunta el XmlReader al valor de la primera fila y descarta el resto del conjunto de resultados.
La característica conjunto de resultados activo múltiple (MARS) permite varias acciones mediante la misma conexión.
Si usa ExecuteReader o BeginExecuteReader para obtener acceso a datos XML, SQL Server devolverá cualquier resultado XML superior a 2033 caracteres de longitud en varias filas de 2033 caracteres cada uno. Para evitar este comportamiento, use ExecuteXmlReader o BeginExecuteXmlReader para leer consultas FOR XML.