XML-gegevens gebruiken in toepassingen
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
In dit artikel worden de beschikbare opties beschreven voor het werken met het XML- gegevenstype in uw toepassing. Het artikel bevat informatie over het volgende:
XML verwerken vanuit een xml- typekolom met behulp van ADO en SQL Server Native Client
XML verwerken vanuit een xml- typekolom met behulp van ADO.NET
Het verwerken van parameters van het xml- type met behulp van ADO.NET
XML verwerken vanuit een xml-typekolom met behulp van ADO en SQL Server Native Client
Als u MDAC-onderdelen wilt gebruiken voor toegang tot de typen en functies die zijn geïntroduceerd in SQL Server 2005 (9.x), moet u de initialisatie-eigenschap DataTypeCompatibility instellen in de ADO-verbindingsreeks.
In het volgende VBScript-voorbeeld (Visual Basic Scripting Edition) ziet u bijvoorbeeld de resultaten van het uitvoeren van een query op een xml-kolom gegevenstype, Demographics
, in de Sales.Store
tabel van de AdventureWorks2022
voorbeelddatabase. De query zoekt met name naar de instantiewaarde van deze kolom voor de rij waarin de CustomerID
gelijk is aan 3
.
Const DS = "MyServer"
Const DB = "AdventureWorks2022"
Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")
CommandText = "SELECT Demographics" & _
" FROM Sales.Store" & _
" INNER JOIN Sales.Customer" & _
" ON Sales.Store.BusinessEntityID = sales.customer.StoreID" & _
" WHERE Sales.Customer.CustomerID = 3" & _
" OR Sales.Customer.CustomerID = 4"
ConnectionString = "Provider=MSOLEDBSQL" & _
";Data Source=" & DS & _
";Initial Catalog=" & DB & _
";Integrated Security=SSPI;" & _
"DataTypeCompatibility=80"
'Connect to the data source.
objConn.Open ConnectionString
'Execute command through the connection and display
Set objRs = objConn.Execute(CommandText)
Dim rowcount
rowcount = 0
Do While Not objRs.EOF
rowcount = rowcount + 1
MsgBox "Row " & rowcount & _
vbCrLf & vbCrLf & objRs(0)
objRs.MoveNext
Loop
'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
In dit voorbeeld ziet u hoe u de compatibiliteitseigenschap van het gegevenstype instelt. Dit is standaard ingesteld op 0 wanneer u SQL Server Native Client gebruikt. Als u de waarde instelt op 80, zal de SQL Server Native Client-provider XML-- en gebruikersgedefinieerde typekolommen weergeven als SQL Server 2000-gegevenstypen (8.x). Dit zou respectievelijk DBTYPE_WSTR en DBTYPE_BYTES zijn.
Notitie
SQL Server Native Client (SNAC) wordt niet geleverd met:
- SQL Server 2022 (16.x) en latere versies
- SQL Server Management Studio 19 en latere versies
De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.
Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:
Voor SQLNCLI die als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019) wordt geleverd, raadpleegt u deze uitzondering voor de levenscyclus van ondersteuning.
Dit voorbeeld testen
Controleer of de SQL Server Native Client is geïnstalleerd en of MDAC 2.6.0or later beschikbaar is op de clientcomputer.
Zie SQL Server Native Client Programmingvoor meer informatie.
Controleer of de
AdventureWorks2022
voorbeelddatabase in SQL Server is geïnstalleerd.Voor dit voorbeeld is de
AdventureWorks2022
voorbeelddatabase vereist.Kopieer de code die u eerder in dit artikel hebt weergegeven en plak de code in uw tekst- of code-editor. Sla het bestand op als HandlingXmlDataType.vbs.
Wijzig het script zoals vereist voor de sql Server-installatie en sla de wijzigingen op.
Wanneer bijvoorbeeld
MyServer
is opgegeven, moet u deze vervangen door(local)
of de werkelijke naam van de server waarop SQL Server is geïnstalleerd.Voer HandlingXmlDataType.vbs uit en voer het script uit.
De resultaten moeten vergelijkbaar zijn met de volgende voorbeeldoutput:
Row 1
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>1500000</AnnualSales>
<AnnualRevenue>150000</AnnualRevenue>
<BankName>Primary International</BankName>
<BusinessType>OS</BusinessType>
<YearOpened>1974</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>38000</SquareFeet>
<Brands>3</Brands>
<Internet>DSL</Internet>
<NumberEmployees>40</NumberEmployees>
</StoreSurvey>
Row 2
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>300000</AnnualSales>
<AnnualRevenue>30000</AnnualRevenue>
<BankName>United Security</BankName>
<BusinessType>BM</BusinessType>
<YearOpened>1976</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>6000</SquareFeet>
<Brands>2</Brands>
<Internet>DSL</Internet>
<NumberEmployees>5</NumberEmployees>
</StoreSurvey>
XML van een xml-typekolom verwerken met behulp van ADO.NET
Als u XML wilt verwerken vanuit een xml- gegevenstypekolom met behulp van ADO.NET en Microsoft .NET Framework, kunt u het standaardgedrag van de SqlCommand--klasse gebruiken. Een xml- gegevenstypekolom en de bijbehorende waarden kunnen bijvoorbeeld op dezelfde manier worden opgehaald als elke SQL-kolom wordt opgehaald met behulp van een SqlDataReader-. Als u echter wilt werken met de inhoud van een xml-kolom gegevenstype als XML, moet u eerst de inhoud toewijzen aan een XmlReader- type.
Zie 'XML-kolomwaarden in een gegevenslezer' in de Microsoft .NET Framework 2.0 SDK-documentatie voor meer informatie en voorbeeldcode.
Een xml-typekolom in parameters verwerken met behulp van ADO.NET
Als u een xml- gegevenstype wilt verwerken dat is doorgegeven als een parameter in ADO.NET en .NET Framework, kunt u de waarde opgeven als een exemplaar van het SqlXml gegevenstype. Er is geen speciale verwerking betrokken, omdat xml- gegevenstypekolommen in SQL Server parameterwaarden op dezelfde manier kunnen accepteren als andere kolommen en gegevenstypen, zoals tekenreeks of geheel getal.
Zie XML-waarden als opdrachtparameters in de Microsoft .NET Framework 2.0 SDK-documentatie voor meer informatie en voorbeeldcode.