2017-02-02 3 views
0

Ich habe eine gespeicherte Prozedur, die Daten in Xml zurückgibt. Ursprünglich war der Stammknoten der Tabellenname selbst. Ich habe auch eine Änderung vorgenommen, so dass der Wurzelknoten "xml" ist.XmlReader liest kein Xml-Ergebnis von der gespeicherten Prozedur

in der gespeicherten Prozedur:

SELECT * FROM mytable 
FOR XML PATH('mytable'), ROOT('xml'), ELEMENTS; 

Das gleiche Problem tritt auf, wenn das Ergebnis wie folgt lautet:

string xmlresult = string.Empty; 

using (var command = (SqlCommand)connection.CreateCommand()) 
{ 
    command.CommandText = "sp_dosomething"; 
    command.CommandType = CommandType.StoredProcedure; 

    using (XmlReader reader = command.ExecuteXmlReader()) 
    { 
     while (reader.Read()) 
     { 
      xmlresult = reader.ReadOuterXml(); 
     } 
    } 
} 

Die Ausnahme ist:

Ungültiger Befehl ExecuteXmlReader gesendet. Der Befehl muss ein Xml-Ergebnis zurückgeben.

an:

bei System.Data.SqlClient.SqlCommand.CompleteXmlReader (SqlDataReader ds) bei System.Data.SqlClient.SqlCommand.ExecuteXmlReader()

Was bin ich falsch machen?

+1

Bitte geben Sie Ihre XML-und gespeicherte Prozedur. –

+0

@RonakPatel Die XML und SP sind ziemlich komplex, aber ich werde hinzufügen, wie ich die XML zurückgeben. –

+0

Sie müssen mindestens Demo-XML zur Verfügung stellen, damit ich Ihnen helfen kann. –

Antwort

1

Aus dem Fehler ist klar, dass das, was Sie erhalten, kein XML-Ergebnis ist.

Anstatt ExecuteXmlReader() verwenden Sie ExecuteReader(), um die Ausgabe zu erhalten und zu sehen. Definitiv wäre es kein nettes XML.

// execute the command 
reader = cmd.ExecuteReader(); 

// iterate through results, printing each to console 
while (reader.Read()) 
{ 
    Console.WriteLine("Print the data here and check output will not be XML in your case"); 
} 
+0

Ich tat, wie Sie vorschlugen, und die Ausnahme ist: Nicht mögliches Objekt vom Typ 'System.Guid' zum Typ 'System zu werfen .String '. Hinweis: Einige Knoten in der XML-Datei sind "uniqueidentifier". Es gibt immer noch nicht das vollständige XML zurück. –

Verwandte Themen