执行 XPath 查询(SQLXMLOLEDB 访问接口)
该示例说明以下特定于 SQLXMLOLEDB 访问接口的属性的用法:
ClientSideXML
Base Path
Mapping Schema
在该示例 ADO 应用程序中,根据 XSD 映射架构 (MySchema.xml) 指定了一个 XPath 查询 (root)。该架构有 <Contacts> 元素,此元素有 ContactID、FirstName 和 LastName 属性。在此架构中,发生默认映射:元素名称映射到同名的表,并且简单类型的属性映射到同名的列。
<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 Server Native Client (SQLNCLI10)。有关详细信息,请参阅 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=SQLNCLI10;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