执行 XPath 查询(SQLXMLOLEDB 提供程序)

此示例演示如何使用以下特定于 SQLXMLOLEDB 提供程序的属性:

  • ClientSideXML

  • Base Path

  • Mapping Schema

在此示例 ADO 应用程序中,针对 XSD 映射架构(MySchema.xml)指定 XPath 查询(根)。 架构具有 <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>  

映射架构属性提供执行 XPath 查询所针对的映射架构。 映射架构可以是 XSD 或 XDR 架构。 Base Path 属性提供映射架构的文件路径。

ClientSideXML 属性设置为 True。 因此,XML 文档在客户端上生成。

在应用程序中,直接指定 XPath 查询。 因此,必须包含 XPath 方言 {ec2a4293-e898-11d2-b1b7-00c04f680c56} 。

注释

在代码中,必须在连接字符串中提供 SQL Server 实例的名称。 此外,此示例指定对需要安装其他网络客户端软件的数据提供程序使用 SQL Server Native Client (SQLNCLI11)。 有关详细信息,请参阅 SQL Server 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=SQLNCLI11;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