クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
SQL Server
SQL Server 2008
データベース エンジン
開発
SQL Server での XML の実装
 アプリケーションでの XML データ型の使用
コミュニティ コンテンツ
このセクションの内容
すべて縮小/すべて展開 すべて縮小
その他のバージョンについては、以下の情報を参照してください。
SQL Server 2008 オンライン ブック (2009 年 7 月)
アプリケーションでの XML データ型の使用

このトピックでは、アプリケーションで xml データ型を操作する際のオプションについて説明します。このトピックには、次の項目に関する情報が含まれています。

  • ADO および SQL Server Native Client を使用した、xml 型の列に含まれている XML の操作
  • ADO.NET を使用した、xml 型の列に含まれている XML の操作
  • ADO.NET を使用した、パラメータに含まれている xml 型の操作

MDAC コンポーネントを使用して、SQL Server 2005 に導入された型や機能にアクセスするためには、DataTypeCompatibility 初期化プロパティを ADO 接続文字列で設定する必要があります。

たとえば、次の Visual Basic Scripting Edition (VBScript) サンプルは、AdventureWorks サンプル データベースの Sales.Store テーブルにある、xml データ型の列である Demographics に対するクエリの結果を示しています。具体的には、クエリは CustomerID3 と等しい行のこの列のインスタンス値を検索します。

Const DS = "MyServer"
Const DB = "AdventureWorks"

Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")

CommandText = "SELECT Demographics" & _
              " FROM Sales.Store" & _
              " WHERE CustomerID = 3" & _
              " OR CustomerID = 4"
                   
ConnectionString = "Provider=SQLNCLI10" & _
                   ";Data Source=" & DS & _
                   ";Initial Catalog=" & DB & _
                   ";Integrated Security=SSPI;" & _
                   "DataTypeCompatibility=80"

'Connect to the data source.
objConn.Open ConnectionString

'Execute command through the connection and display
Set objRs = objConn.Execute(CommandText)

Dim rowcount
rowcount = 0
Do While Not objRs.EOF
   rowcount = rowcount + 1
   MsgBox "Row " & rowcount & _
           vbCrLf & vbCrLf & objRs(0)
   objRs.MoveNext
Loop

'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing

この例は、DataTypeCompatibility を設定する方法を示しています。SQL Server Native Client を使用している場合、このプロパティには既定値の 0 が設定されています。この値を 80 に設定すると、SQL Server Native Client プロバイダにより、xml 型およびユーザー定義型の列が SQL Server 2000 データ型として示されます。それぞれのデータ型は、DBTYPE_WSTR および DBTYPE_BYTES になります。

SQL Server Native Client はクライアント コンピュータにもインストールし、データ プロバイダとして使用するために、"Provider=SQLNCLI10;..." を含む接続文字列を指定する必要があります。

この例をテストするには
  1. SQL Server Native Client がクライアント コンピュータにインストールされており、クライアント コンピュータで MDAC 2.6.0 以降のバージョンを使用できることを確認します。

    詳細については、「SQL Server 2008 Native Client プログラミング」を参照してください。

  2. SQL Server の AdventureWorks サンプル データベースがインストールされていることを確認します。

    この例では AdventureWorks サンプル データベースが必要です。詳細については、「SQL Server のサンプルとサンプル データベースのインストールに関する注意点」を参照してください。

  3. このトピックの前半に示したコードをコピーし、テキスト エディタまたはコード エディタに貼り付けます。HandlingXmlDataType.vbs という名前でファイルを保存します。

  4. SQL Server インストールでの必要性に応じてスクリプトを変更し、変更を保存します。

    たとえば、MyServer が指定されている箇所は、(local) または SQL Server がインストールされているサーバーの実際の名前のいずれかに置き換える必要があります。

  5. HandlingXmlDataType.vbs を実行し、スクリプトを実行します。

結果は次のサンプル出力に似たものになります。

Row 1

<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
  <AnnualSales>1500000</AnnualSales>
  <AnnualRevenue>150000</AnnualRevenue>
  <BankName>Primary International</BankName>
  <BusinessType>OS</BusinessType>
  <YearOpened>1974</YearOpened>
  <Specialty>Road</Specialty>
  <SquareFeet>38000</SquareFeet>
  <Brands>3</Brands>
  <Internet>DSL</Internet>
  <NumberEmployees>40</NumberEmployees>
</StoreSurvey>

Row 2

<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
  <AnnualSales>300000</AnnualSales>
  <AnnualRevenue>30000</AnnualRevenue>
  <BankName>United Security</BankName>
  <BusinessType>BM</BusinessType>
  <YearOpened>1976</YearOpened>
  <Specialty>Road</Specialty>
  <SquareFeet>6000</SquareFeet>
  <Brands>2</Brands>
  <Internet>DSL</Internet>
  <NumberEmployees>5</NumberEmployees>
</StoreSurvey>

ADO.NET および Microsoft .NET Framework を使用して、xml データ型の列に含まれている XML を操作するには、SqlCommand クラスの標準の動作を使用します。たとえば、xml データ型の列とその値は、SqlDataReader を使用して SQL 列を取得するときと同じ方法で取得できます。ただし、XML として xml データ型の列のコンテンツを使用して作業を行う場合は、最初にそのコンテンツを XmlReader 型に割り当てる必要があります。

詳細とコード例については、Microsoft .NET Framework 2.0 SDK のマニュアルの「XML Column Values in a Data Reader」を参照してください。

ADO.NET および .NET Framework でパラメータとして渡された xml データ型を操作するには、SqlXml データ型のインスタンスとして値を指定することができます。特殊な処理は必要ありません。SQL Server の xml データ型の列は、stringinteger などの他の列やデータ型と同じように、パラメータ値を受け取ることができます。

詳細とコード例については、Microsoft .NET Framework 2.0 SDK のマニュアルの「XML Values as Command Parameters」を参照してください。

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker