次の方法で共有


SqlCommand.ExecuteXmlReader メソッド

CommandTextConnection に送信し、 XmlReader オブジェクトを構築します。

Public Function ExecuteXmlReader() As XmlReader
[C#]
public XmlReader ExecuteXmlReader();
[C++]
public: XmlReader* ExecuteXmlReader();
[JScript]
public function ExecuteXmlReader() : XmlReader;

戻り値

XmlReader オブジェクト。

例外

例外の種類 条件
SqlException ロックされている行に対してコマンドを実行しているときに例外が発生しました。この例外は .NET Framework Version 1.0 を使用している場合は生成されません。

解説

CommandText プロパティには、通常、有効な FOR XML 句を使用した Transact-SQL ステートメントを指定します。ただし、 CommandText には、有効な XML が格納された ntext データを返すステートメントを指定することもできます。

ExecuteXmlReader クエリは、通常、次の形式で指定します。この例は、C# のコード例です。

SqlCommand mySqlCommand = new SqlCommand("select * from customers FOR XML AUTO, XMLDATA", mySqlConnection);

メモ   このタイプのクエリは、Microsoft SQL Server 2000 以降でしか使用できません。詳細については、『SQL Server Books Online』の「FOR XML 句を使用するためのガイドライン」を参照してください。

XmlReader の使用中は、関連付けられた SqlConnection は、その XmlReader によって使用されるためビジー状態になります。この状態では、 SqlConnection に対して、閉じる以外の操作を実行できません。 XmlReaderClose メソッドを呼び出すまでこの状態が続きます。

使用例

[Visual Basic, C#, C++] SqlCommand を作成し、 ExecuteXmlReader を使用して実行する例を次に示します。この例では、Transact-SQL FOR XML SELECT ステートメントの文字列とデータ ソースへの接続に使用する文字列が渡されます。

 
Public Sub CreateMyXmlReader(myXmlQuery As String, myConnection As SqlConnection)
    Dim myCommand As SqlCommand = New SqlCommand(myXmlQuery, myConnection)

    Try
      myConnection.Open()

      Dim myXmlReader As System.Xml.XmlReader = myCommand.ExecuteXmlReader()

      ' Always close the XmlReader when finished.
      myXmlReader.Close()

    Catch e As Exception
      Dim log As System.Diagnostics.EventLog = New System.Diagnostics.EventLog()
      log.Source = "My Application"
      log.WriteEntry(e.ToString())
      Console.WriteLine("Exception of type {0} occurred.", e.GetType().ToString())
    Finally
      myConnection.Close()
    End Try
End Sub

[C#] 
public void CreateMyXmlReader(string myXmlQuery, SqlConnection myConnection) 
 {
    SqlCommand myCommand = new SqlCommand(myXmlQuery, myConnection);
    try
    {
     myConnection.Open();

     System.Xml.XmlReader myXmlReader = myCommand.ExecuteXmlReader();

     // Always close the XmlReader when finished.
     myXmlReader.Close();
    }
    catch(Exception e)
    {
      System.Diagnostics.EventLog log = new System.Diagnostics.EventLog();
      log.Source = "My Application";
      log.WriteEntry(e.ToString());
      Console.WriteLine("Exception of type {0} occurred.", e.GetType());
    }
    finally
    {
      myConnection.Close();
    }
 }

[C++] 
public:
    void CreateMyXmlReader(String* myXmlQuery, SqlConnection* myConnection)
    {
        SqlCommand* myCommand = new SqlCommand(myXmlQuery, myConnection);
        try
        {
            myConnection->Open();

            System::Xml::XmlReader* myXmlReader = myCommand->ExecuteXmlReader();

            // Always close the XmlReader when finished:
            myXmlReader->Close();
        }
        catch (Exception* e)
        {
            System::Diagnostics::EventLog* log = new System::Diagnostics::EventLog();
            log->Source = S"My Application";
            log->WriteEntry(e->ToString());
            Console::WriteLine(S"Exception of type {0} occurred.", e->GetType());
        }
        myConnection->Close();
    };

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

SqlCommand クラス | SqlCommand メンバ | System.Data.SqlClient 名前空間