次の方法で共有


SQL クエリを含むテンプレートの実行 (SQLXMLOLEDB プロバイダ)

この例では、SQLXMLOLEDB プロバイダ固有のプロパティ ClientSideXML の使用法を示します。このクライアント側の ADO サンプル アプリケーションでは、SQL クエリで構成される XML テンプレートがサーバーで実行されます。

ここでは ClientSideXML プロパティが True に設定されているので、FOR XML 句を指定せずに SELECT ステートメントをサーバーに送信します。サーバーではクエリが実行され、クライアントに行セットが返されます。次にクライアントではその行セットに FOR XML 変換が適用され、XML ドキュメントが作成されます。

生成される XML ドキュメントに単一の最上位ルート要素 (<ROOT>) が含まれるため、この XML テンプレートでは xml root プロパティは指定されません。

XML テンプレートを実行するには、言語 {5d531cb2-e6ed-11d2-b252-00c04f681b71} を指定する必要があります。

ms172704.note(ja-jp,SQL.90).gifメモ :
コードでは、接続文字列に SQL Server インスタンス名を含める必要があります。また、この例ではデータ プロバイダとして SQL Native Client (SQLNCLI) を使用するよう指定していますが、これには追加ネットワーク クライアントがインストールされていることが必要です。詳細については、「SQL Native Client のシステム要件」を参照してください。
Option Explicit

Sub Main()
  Dim oTestStream As New ADODB.Stream
  Dim oTestConnection As New ADODB.Connection
  Dim oTestCommand As New ADODB.Command
  oTestConnection.Open "Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI;Data Source=SqlServerName;Initial Catalog=AdventureWorks;Integrated Security=SSPI;"

  Set oTestCommand.ActiveConnection = oTestConnection
  oTestCommand.Properties("ClientSideXML") = True
  oTestCommand.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'> " & _
        " <sql:query> " & _
        "   SELECT TOP 10 FirstName, LastName FROM Person.Contact FOR XML AUTO " & _
        "   </sql:query> " & _
        " </ROOT> "
  oTestStream.Open
  ' You need the dialect if you are executing 
  ' XML templates (not for SQL queries).
  oTestCommand.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
  oTestCommand.Properties("Output Stream").Value = oTestStream
  oTestCommand.Execute , , adExecuteStream

  oTestStream.Position = 0
  oTestStream.Charset = "utf-8"
  Debug.Print oTestStream.ReadText(adReadAll)
End Sub

Sub Form_Load()
  Main
End Sub