使用 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

  1. 向计算机上的某一文件夹复制 DiffGram 示例中的示例之一的任一 DiffGram 和对应 XSD 架构。

  2. 打开 Visual Basic 并创建标准 EXE 项目。

  3. 将这些引用添加到项目中:

    Microsoft ActiveX Data Objects 2.8 Library
    
  4. 在工具箱中,单击 CommandButton,然后在该窗体上绘制一个按钮。

  5. 双击该按钮编辑代码,并添加本主题中提供的应用程序代码。

  6. 编辑代码以指定 DiffGram 和 XSD 文件名,并根据需要编辑连接字符串。

  7. 执行应用程序。执行结果取决于您执行的 DiffGram。