Wykonywanie wierzchołki przy użyciu ADO (SQLXML 4.0)
To Microsoft aplikacji Visual Basic używa obiektów ADO, aby ustanowić połączenie z wystąpienie programu Microsoft SQL Server i wykonać wierzchołki.Wierzchołki aktualizuje nazwisko pracownika.W tym przykładzie użyto AdventureWorks2008R2 przykładowej bazy danych.
W przykładowej aplikacji:
Conn obiektu (ADODB.Połączenie) ustanawia połączenie uruchomione wystąpienie z SQL Server na komputerze z określonym serwerem.
Cmd obiektu (ADODB.Polecenie) wykonuje na ustanowione połączenie.
Dialekt polecenia jest zestaw do DBGUID_MSSQLXML.
Wierzchołki jest kopiowany do strumienia polecenia (strmIn).
Polecenie wyjściowych strumień jest zestaw do StrmOut obiektu (ADODB.Strumienia) do otrzymania żadnego zwracane dane.
Wreszcie (wierzchołki) polecenie jest wykonywane.
Poniżej przedstawiono przykładowy kod:
Private Sub Form_Load()
Dim cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim strmIn As New ADODB.Stream
Dim strmOut As New ADODB.Stream
Dim SQLxml As String
' Open a connection to the instance of SQL Server.
conn.Provider = "SQLOLEDB"
conn.Open "server=(local); database=AdventureWorks2008R2; Integrated Security=SSPI; "
conn.Properties("SQLXML Version") = "SQLXML.4.0"
Set cmd.ActiveConnection = conn
' Build the command string in the form of an XML template.
SQLxml = "<ROOT xmlns:updg='urn:schemas-microsoft-com:xml-updategram' >"
SQLxml = SQLxml & " <updg:sync updg:nullvalue='IsNULL'>"
SQLxml = SQLxml & " <updg:before>"
SQLxml = SQLxml & " <Person.Person BusinessEntityID='64' Title='IsNULL'/>"
SQLxml = SQLxml & " </updg:before>"
SQLxml = SQLxml & " <updg:after>"
SQLxml = SQLxml & " <Person.Person BusinessEntityID='64' Title='Mr.'/>"
SQLxml = SQLxml & " </updg:after>"
SQLxml = SQLxml & " </updg:sync>"
SQLxml = SQLxml & "</ROOT>"
' Set the command dialect to DBGUID_MSSQLXML.
cmd.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
' Open the command stream and write our template to it.
strmIn.Open
strmIn.WriteText SQLxml
strmIn.Position = 0
Set cmd.CommandStream = strmIn
' Execute the command, open the return stream, and read the result.
strmOut.Open
strmOut.LineSeparator = adCRLF
cmd.Properties("Output Stream").Value = strmOut
cmd.Properties("Output Encoding").Value = "UTF-8"
cmd.Execute , , adExecuteStream
strmOut.Position = 0
Debug.Print strmOut.ReadText
strmOut.Close
strmIn.Close
End Sub
Ostrzeżenie
Jeśli używasz SQLXML z obiektów ADO do wykonywania updategrams określonego schematu XSD musi zestaw "SQLXML Version"" Właściwość "SQLXML.4.0"" obiekt połączenia, jak pokazano w następującym przykładzie wiersz kodu:
conn.Properties("SQLXML Version") = "SQLXML.4.0"
Określanie mapowania schematu dla wierzchołki
Ten przykład ilustruje sposób określić i użyć schematu mapowanie w diagramach aktualizacji.
Zapisz następujące schematu XSD (EmpSchema.xml) na dysku i Aktualizuj ścieżka określony kod lokalizacji schematu mapowania na dysku.Kod zakłada, że schemat jest zapisywany na dysku C: dysku w folderze schematów.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Person" >
<xsd:complexType>
<xsd:attribute name="CID"
sql:field="BusinessEntityID"
type="xsd:string" />
<xsd:attribute name="MName"
sql:field="MiddleName"
type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Ponieważ schematy XSD i XDR może być określony, jest to równoważne schematu XDR:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Contact" sql:relation="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="MName" />
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="MName" sql:field="MiddleName" />
</ElementType>
</Schema>
Jest to kod języka Visual Basic wykonać wierzchołki, zawierający mapowanie skojarzonego schematu.Wierzchołki aktualizuje drugie imię kontaktu 1 w tabela Person.Person.
Private Sub Form_Load()
Dim cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim strmIn As New ADODB.Stream
Dim strmOut As New ADODB.Stream
' Open a connection to the SQL Server.
conn.Provider = "SQLOLEDB"
conn.Open "server=(local); database=AdventureWorks2008R2; Integrated Security='SSPI' ;"
conn.Properties("SQLXML Version") = "SQLXML.4.0"
Set cmd.ActiveConnection = conn
' Open the command stream and write the template to it.
strmIn.Open
strmIn.WriteText "<ROOT xmlns:updg='urn:schemas-microsoft-com:xml-updategram' >"
strmIn.WriteText " <updg:sync mapping-schema='C:\Schemas\EmpSchema.xml' >"
strmIn.WriteText " <updg:before>"
strmIn.WriteText " <Contact CID='1' />"
strmIn.WriteText " </updg:before>"
strmIn.WriteText " <updg:after>"
strmIn.WriteText " <Contact MName='M.'/>"
strmIn.WriteText " </updg:after>"
strmIn.WriteText " </updg:sync>"
strmIn.WriteText "</ROOT>"
' Set the command dialect to XML.
cmd.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
strmIn.Position = 0
Set cmd.CommandStream = strmIn
' Execute the command, open the return stream, and read the result.
strmOut.Open
strmOut.LineSeparator = adCRLF
cmd.Properties("Output Stream").Value = strmOut
cmd.Execute , , adExecuteStream
strmOut.Position = 0
Debug.Print strmOut.ReadText
strmOut.Close
strmIn.Close
conn.Close
End Sub
Przekazywanie parametrów
Parametry nie są przekazywane w aplikacji Visual Basic przedstawione wcześniej.W tej aplikacji BusinessEntityID i MiddleName wartości są przekazywane jako dane wejściowe sparametryzowana wierzchołki.
Private Sub Form_Load()
Dim cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim strmIn As New ADODB.Stream
Dim strmOut As New ADODB.Stream
Dim InputBusinessEntityID As String
Dim InputMiddleName As String
InputBusinessEntityID = "1"
InputMiddleName = "Q."
' Open a connection to the instance of SQL Server.
conn.Provider = "SQLOLEDB"
conn.Open "server=(local); database=AdventureWorks2008R2; Integrated Security=SSPI; "
conn.Properties("SQLXML Version") = "SQLXML.4.0"
Set cmd.ActiveConnection = conn
' Build the command string in the form of an XML template.
SQLxml = "<ROOT xmlns:updg='urn:schemas-microsoft-com:xml-updategram' >"
SQLxml = SQLxml & "<updg:header>"
SQLxml = SQLxml & "<updg:param name='BusinessEntityID'/>"
SQLxml = SQLxml & "<updg:param name='MiddleName' />"
SQLxml = SQLxml & "</updg:header>"
SQLxml = SQLxml & "<updg:sync >"
SQLxml = SQLxml & " <updg:before>"
SQLxml = SQLxml & " <Person.Person BusinessEntityID='$BusinessEntityID' />"
SQLxml = SQLxml & "</updg:before>"
SQLxml = SQLxml & "<updg:after>"
SQLxml = SQLxml & "<Person.Person MiddleName='$MiddleName' />"
SQLxml = SQLxml & "</updg:after>"
SQLxml = SQLxml & "</updg:sync>"
SQLxml = SQLxml & "</ROOT>"
' Set the command dialect to XML.
cmd.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
' Open the command stream and write the template to it.
strmIn.Open
strmIn.WriteText SQLxml
strmIn.Position = 0
Set cmd.CommandStream = strmIn
' Execute the command, open the return stream, and read the result.
strmOut.Open
strmOut.LineSeparator = adCRLF
cmd.NamedParameters = True
cmd.Parameters.Append cmd.CreateParameter("@BusinessEntityID", adBSTR, adParamInput, 1, InputBusinessEntityID)
cmd.Parameters.Append cmd.CreateParameter("@MiddleName", adBSTR, adParamInput, 7, InputMiddleName)
cmd.Properties("Output Stream").Value = strmOut
cmd.Execute , , adExecuteStream
strmOut.Position = 0
Debug.Print strmOut.ReadText
End Sub