2017-02-02 9 views
0

私はXmlでデータを返すストアドプロシージャを持っています。もともとルートノードはテーブル名そのものでした。私はまた、ルートノードが "xml"になるように変更を加えました。XmlReaderがストアドプロシージャからXml結果を読み取っていません

ストアドプロシージャで:

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(); 
     } 
    } 
} 

例外がある:ExecuteXmlReaderに送信

無効なコマンドの結果を読み取るときに、以下のように

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

同様の問題が発生します。コマンドはXml結果を返す必要があります。で

:System.Data.SqlClient.SqlCommand.ExecuteXmlReaderでSystem.Data.SqlClient.SqlCommand.CompleteXmlReaderで

(SqlDataReaderのDS) ()

私は何間違っている?

+1

xmlとストアドプロシージャを指定してください。 –

+0

@RonakPatel xmlとspは非常に複雑ですが、xmlを返す方法を追加します。 –

+0

デモ用のxmlを提供する必要がありますので、お手伝いできます。 –

答えて

1

エラーから、あなたが得ていることはXML結果ではないことは明らかです。

ExecuteXmlReader()を使用する代わりに、ExecuteReader()を使用して出力を取得してみてください。間違いなく素晴らしい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

あなたが提案したように、例外は次のとおりです: 'System.Guid' .String '。注:xmlのいくつかのノードは 'uniqueidentifier'です。それでも完全なxmlは返されません。 –

関連する問題