XPath クエリの実行 (SQLXMLOLEDB プロバイダ)
この例では、次の SQLXMLOLEDB プロバイダ固有のプロパティについて、使用法を示します。
- ClientSideXML
- Base Path
- Mapping Schema
このサンプル ADO アプリケーションでは、XPath クエリ (root) を XSD マッピング スキーマ (MySchema.xml) に対して指定します。このスキーマには、属性 ContactID、FirstName、LastName をとる <Contacts> 要素が含まれます。このスキーマでは、既定のマッピングにより、要素名は同じ名前のテーブルに、単純型の属性は同じ名前の列にマップされます。
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:sql='urn:schemas-microsoft-com:mapping-schema'>
<xsd:element name= 'root' sql:is-constant='1'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = 'Contacts'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='Contacts' sql:relation='Person.Contact'>
<xsd:complexType>
<xsd:attribute name='ContactID' type='xsd:integer' />
<xsd:attribute name='FirstName' type='xsd:string'/>
<xsd:attribute name='LastName' type='xsd:string' />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Mapping Schema プロパティでは、Xpath クエリを実行する対象のマッピング スキーマを指定します。このマッピング スキーマには XSD または XDR スキーマを指定できます。Base Path プロパティでは、マッピング スキーマへのファイル パスを指定します。
ClientSideXML プロパティは True に設定します。つまり、XML ドキュメントはクライアントで生成されます。
このアプリケーションでは、XPath クエリを直接指定します。したがって、XPath 言語 {ec2a4293-e898-11d2-b1b7-00c04f680c56} を含める必要があります。
メモ : |
---|
コードでは、接続文字列に 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;"
oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = True
oTestCommand.CommandText = "root"
oTestStream.Open
oTestCommand.Dialect = "{ec2a4293-e898-11d2-b1b7-00c04f680c56}"
oTestCommand.Properties("Output Stream").Value = oTestStream
oTestCommand.Properties("Base Path").Value = "c:\Schemas\SQLXML4\XPathDirect\"
oTestCommand.Properties("Mapping Schema").Value = "mySchema.xml"
oTestCommand.Properties("Output Encoding") = "utf-8"
oTestCommand.Execute , , adExecuteStream
oTestStream.Position = 0
oTestStream.Charset = "utf-8"
Debug.Print oTestStream.ReadText(adReadAll)
End Sub
Sub Form_Load()
main
End Sub