Delen via


Toegang tot SQLXML-functionaliteit in de .NET-omgeving

Van toepassing op:SQL ServerAzure SQL Database

In dit voorbeeld ziet u:

  • Hoe gebruik je Microsoft SQLXML Managed Classes (Microsoft.Data.SqlXml) om toegang te krijgen tot Microsoft SQL Server in de Microsoft .NET Framework-omgeving.

  • Hoe DiffGrams die worden gegenereerd in de .NET Framework-omgeving data-updates kunnen toepassen op SQL Server-tabellen.

In deze toepassing wordt een XPath-query uitgevoerd tegen een XSD-schema. De uitvoering van de XPath-query levert een XML-document terug dat bestaat uit contactgegevens (Voornaam, Achternaam). De applicatie laadt het XML-document in de dataset in de .NET Framework-omgeving. De gegevens in de dataset worden aangepast: de voornaam van het contact wordt veranderd in "Susan" voor het eerste contact in de dataset. Het DiffGram wordt gegenereerd uit de dataset, en de update die in het DiffGram is gespecificeerd (de wijziging van de voornaam van de werknemer) wordt vervolgens toegepast op de Person.Contact-tabel.

Opmerking

In de code moet je de naam van de instantie van SQL Server in de verbindingsreeks opgeven.

using System;  
using System.Data;  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
   static string ConnString = "Provider=SQLOLEDB;Server=SqlServerName;database=AdventureWorks;Integrated Security=SSPI;";  
   public static int testParams()  
   {  
      DataRow row;  
      SqlXmlAdapter ad;  
      //need a memory stream to hold diff gram temporarily  
      MemoryStream ms = new MemoryStream();  
      SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
      cmd.RootTag = "ROOT";  
      cmd.CommandText = "Con";  
      cmd.CommandType = SqlXmlCommandType.XPath;  
      cmd.SchemaPath = "MySchema.xml";  
      //load data set  
      DataSet ds = new DataSet();  
      ad = new SqlXmlAdapter(cmd);  
      ad.Fill(ds);  
      row = ds.Tables["Con"].Rows[0];  
      row["FName"] = "Susan";  
      ad.Update(ds);  
      return 0;  
   }  
   public static int Main(String[] args)  
   {  
      testParams();  
      return 0;  
   }  
}  

Om het voorbeeld te testen:

Om dit voorbeeld te testen, moet je het Microsoft .NET Framework op je computer hebben geïnstalleerd.

  1. Sla dit XSD-schema (MySchema.xml) op in een map:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
                xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
      <xsd:element name="Con" sql:relation="Person.Contact" >  
       <xsd:complexType>  
         <xsd:sequence>  
            <xsd:element name="FName"    
                         sql:field="FirstName"   
                         type="xsd:string" />   
            <xsd:element name="LName"    
                         sql:field="LastName"    
                         type="xsd:string" />  
         </xsd:sequence>  
         <xsd:attribute name="ContactID" type="xsd:integer" />  
        </xsd:complexType>  
      </xsd:element>  
    </xsd:schema>  
    
  2. Sla de C#-code (DocSample.cs) die in dit voorbeeld wordt gegeven op in dezelfde map waarin het schema is opgeslagen. (Als je de bestanden in een andere map opslaat, moet je de code bewerken en het juiste directorypad voor het mappingschema opgeven.)

  3. Compileer de code. Om de code in de opdrachtprompt te compileren, gebruik u:

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs  
    

    Dit creëert een uitvoerbaar bestand (DocSample.exe).

Voer bij de opdrachtprompt DocSample.exeuit.