使用 ADO 执行 DiffGram (SQLXML 4.0)
该 Microsoft Visual Basic 应用程序使用 ADO 建立与 Microsoft SQL Server 实例的连接,并执行 DiffGram。在该应用程序中,DiffGram 和 XSD 架构存储在文件中。该应用程序从指定的文件加载 DiffGram。您可以使用 DiffGram 示例中介绍的任何 DiffGram(及其关联 XSD 架构)。
以下是示例应用程序的过程:
conn 对象 (ADODB.Connection) 建立与特定服务器上正在运行的 SQL Server 实例的连接。
在已建立的连接上执行 cmd 对象 (ADODB.Command)。
将命令方言设置为 DBGUID_MSSQLXML。
将 DiffGram 复制到文件中的命令流 (strmIn)。
将该命令的输出流设置为 StrmOut 对象 (ADODB.Stream) 以便接收任何返回的数据。
当使用 SQLOLEDB 访问接口时,默认情况下,您将获取 Sqlxmlx.dll 提供的 Microsoft SQLXML 功能。若要配合使用 Sqlxml4.dll 和 SQLOLEDB 访问接口,必须在 SQLOLEDB 访问接口 Connection 对象中将 SQLXML Version 属性设置为 SQLXML.4.0。
执行该命令 (DiffGram)。
以下代码为示例应用程序。
![]() |
---|
在该代码中,必须在连接字符串中提供 SQL Server 实例的名称。 |
Private Sub Command1_Click()
Dim cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim strmOut As New ADODB.Stream
Dim strmIn As New ADODB.Stream
'Open a connection to SQL Server.
conn.Provider = "SQLOLEDB"
conn.Open "server=SqlServerName; database=tempdb; Integrated Security=SSPI; "
conn.Properties("SQLXML Version") = "SQLXML.4.0"
Set cmd.ActiveConnection = conn
strmIn.Open
strmIn.Charset = "UTF-8"
strmIn.LoadFromFile "C:\SomeFilePath\SampleDiffGram.xml"
strmIn.Position = 0
Set cmd.CommandStream = strmIn
strmOut.Open
cmd.Properties("Output Stream").Value = strmOut
cmd.Properties("Output Encoding").Value = "UTF-8"
cmd.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
cmd.Properties("Mapping Schema") = "C:\SomeFilePath\SampleDiffGram.xml"
cmd.Execute , , adExecuteStream
strmOut.Position = 0
Set cmd = Nothing
strmOut.Charset = "UTF-8"
strmOut.SaveToFile "C:\DropIt.txt", adSaveCreateOverWrite
strmOut.Close
Set strmOut = Nothing
End Sub
测试 DiffGram
向计算机上的某一文件夹复制 DiffGram 示例中的示例之一的任一 DiffGram 和对应 XSD 架构。
打开 Visual Basic 并创建标准 EXE 项目。
将这些引用添加到项目中:
Microsoft ActiveX Data Objects 2.8 Library
在工具箱中,单击 CommandButton,然后在该窗体上绘制一个按钮。
双击该按钮编辑代码,并添加本主题中提供的应用程序代码。
编辑代码以指定 DiffGram 和 XSD 文件名,并根据需要编辑连接字符串。
执行应用程序。执行结果取决于您执行的 DiffGram。