Utilisation du type de données XML dans les applications

Cette rubrique décrit les options dont vous disposez pour utiliser le type de données xml dans votre application. Cette rubrique inclut des informations sur les thèmes suivants :

  • Gestion de XML à partir d'une colonne de type xml à l'aide d'ADO et de SQL Server Native Client

  • Gestion de XML à partir d'une colonne de type xml à l'aide d'ADO.NET

  • Gestion du type xml dans les paramètres à l'aide d'ADO.NET

Gestion de XML à partir d'une colonne de type XML à l'aide d'ADO et de SQL Server Native Client

Pour utiliser des composants MDAC pour accéder aux types et aux fonctionnalités introduits dans SQL Server 2005, vous devez définir la propriété d'initialisation DataTypeCompatibility dans la chaîne de connexion ADO.

Par exemple, l'exemple VBScript (Visual Basic Scripting Edition) suivant affiche les résultats de l'interrogation d'une colonne de type de données xml, Demographics, dans la table Sales.Store de l'exemple de base de données AdventureWorks. La requête recherche plus particulièrement la valeur de l'instance de cette colonne pour la ligne dans laquelle CustomerID est égal à 3.

Const DS = "MyServer"
Const DB = "AdventureWorks"

Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")

CommandText = "SELECT Demographics" & _
              " FROM Sales.Store" & _
              " WHERE CustomerID = 3" & _
              " OR CustomerID = 4"
                   
ConnectionString = "Provider=SQLNCLI10" & _
                   ";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

Cet exemple montre comment définir la propriété de compatibilité du type de données. Par défaut, elle a la valeur 0 lorsque vous utilisez SQL Server Native Client. Une fois que vous avez affecté la valeur 80 à cette propriété, le fournisseur SQL Server Native Client fait apparaître les colonnes de type xml et définies par l'utilisateur comme des types de données SQL Server 2000. Il s'agit respectivement de BTYPE_WSTR et de DBTYPE_BYTES.

SQL Server Native Client doit également être installé sur l'ordinateur client et la chaîne de connexion doit le désigner comme fournisseur de données avec « Provider=SQLNCLI10;... ».

Pour tester cet exemple

  1. Vérifiez que SQL Server Native Client est installé et que MDAC version 2.6.0 ou ultérieure est disponible sur l'ordinateur client.

    Pour plus d'informations, consultez Programmation de SQL Server 2008 Native Client.

  2. Vérifiez que l'exemple de base de données AdventureWorks de SQL Server est installé.

    Cet exemple requiert l'exemple de base de données AdventureWorks. Pour plus d'informations, consultez Considérations relatives à l'installation d'exemples de bases de données et d'exemples de code SQL Server.

  3. Copiez le code préalablement présenté dans cette rubrique et collez-le dans votre éditeur de texte ou de code. Enregistrez le fichier sous HandlingXmlDataType.vbs.

  4. Modifiez le script comme le requiert votre installation de SQL Server et enregistrez vos modifications.

    Par exemple, à l'endroit où MyServer est spécifié, vous devez le remplacer par (local) ou par le nom réel du serveur sur lequel SQL Server est installé.

  5. Exécutez HandlingXmlDataType.vbs et exécutez le script.

Les résultats doivent être semblables à l'exemple suivant :

Row 1

<StoreSurvey xmlns="https://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="https://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>

Gestion de XML à partir d'une colonne de type XML à l'aide d'ADO.NET

Pour gérer XML à partir d'une colonne de type de données xml à l'aide d'ADO.NET et de Microsoft.NET Framework, vous pouvez utiliser le comportement standard de la classe SqlCommand. Par exemple, une colonne de type de données xml et ses valeurs peuvent être récupérées comme toute colonne SQL à l'aide de SqlDataReader.Toutefois, si vous souhaitez utiliser le contenu d'une colonne de type de données xml sous la forme XML, vous devez d'abord assigner un type XmlReader au contenu.

Pour plus d'informations et d'exemples de code, consultez la rubrique relative aux valeurs de colonne XML dans un lecteur de données dans la documentation du Kit de développement logiciel de Microsoft.NET Framework 2.0.

Gestion d'une colonne de type XML dans les paramètres à l'aide d'ADO.NET

Pour gérer un type de données XML passé en tant que paramètre dans ADO.NET et le .NET Framework, vous pouvez fournir la valeur sous la forme d'une instance du type de données SqlXml. Aucune gestion spéciale n'est requise, car les colonnes de type de données xml de SQL Server peuvent accepter les valeurs de paramètre de la même façon que d'autres colonnes et types de données, tels que string ou integer.

Pour plus d'informations et d'exemples de code, consultez la rubrique relative aux valeurs XML en tant que paramètres de commande dans la documentation du Kit de développement logiciel de Microsoft.NET Framework 2.0.