Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Det här exemplet visar:
Skapar parametrar (SqlXmlParameter-objekt).
Tilldela värden till egenskaperna (Namn och Värde) för SqlXmlParameter-objekt.
I detta exempel utförs en enkel SQL-fråga för att hämta förnamn, efternamn och födelsedatum för den anställde vars efternamnsvärde skickas som parameter. Vid specificering av parametern (LastName) sätts endast egenskapen Value. Namnegenskapen är inte satt, eftersom parametern i denna fråga är positionsbestämd och inget namn krävs.
Egenskapen CommandType för SqlXmlCommand-objektet är som standard Sql. Därför är egenskapen inte explicit satt.
Anmärkning
I koden måste du ange namnet på instansen av Microsoft SQL Server i anslutningssträngen.
Detta är C#-koden:
using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";
public static int testParams()
{
Stream strm;
SqlXmlParameter p;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "SELECT FirstName, LastName FROM Person.Contact WHERE LastName=? For XML Auto";
p = cmd.CreateParameter();
p.Value = "Achong";
string strResult;
try
{
strm = cmd.ExecuteStream();
strm.Position = 0;
using(StreamReader sr = new StreamReader(strm))
{
Console.WriteLine(sr.ReadToEnd());
}
}
catch (SqlXmlException e)
{
//in case of an error, this prints error returned.
e.ErrorStream.Position=0;
strResult=new StreamReader(e.ErrorStream).ReadToEnd();
System.Console.WriteLine(strResult);
}
return 0;
}
public static int Main(String[] args)
{
testParams();
return 0;
}
}
Testa programmet
Spara C#-koden (DocSample.cs) som ges i detta ämne i en mapp.
Komplisera koden. För att kompilera koden i kommandoprompten, använd:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csDetta skapar en exekverbar fil (DocSample.exe).
Vid kommandoprompten, utför DocSample.exe.
För att testa detta exempel måste du ha Microsoft .NET Framework installerat på din dator.
Istället för att ange SQL-frågor som kommandotext kan du ange en mall (som visas i följande kodfragment) som kör ett updategram (som också är en mall) för att infoga en kundpost. Du kan specificera mallar och updategrams i filer och köra filer. För mer information, se Exekvering av mallfiler genom att använda egenskapen CommandText.
SqlXmlCommand cmd = new SqlXmlCommand("Provider=SQLOLEDB;Data Source=SqlServerName;Initial Catalog=Database; Integrated Security=SSPI;");
Stream stm;
cmd.CommandType = SqlXmlCommandType.UpdateGram;
cmd.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql' xmlns:updg='urn:schemas-microsoft-com:xml-updategram'>" +
"<updg:sync>" +
"<updg:before/>" +
"<updg:after>" +
"<Customer CustomerID='aaaaa' CustomerName='Some Name' CustomerTitle='SomeTitle' />" +
"</updg:after>" +
"</updg:sync>" +
"</ROOT>";
stm = cmd.ExecuteStream();
stm = null;
cmd = null;
Att använda ExecuteToStream
Om du har en befintlig ström kan du använda metoden ExecuteToStream istället för att skapa ett Stream-objekt och använda metoden Exekut. Koden från föregående exempel revideras här för att använda ExecuteToStream-metoden:
using System;
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()
{
SqlXmlParameter p;
MemoryStream ms = new MemoryStream();
StreamReader sr = new StreamReader(ms);
ms.Position = 0;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "select FirstName, LastName from Person.Contact where LastName = ? For XML Auto";
p = cmd.CreateParameter();
p.Value = "Achong";
cmd.ExecuteToStream(ms);
ms.Position = 0;
Console.WriteLine(sr.ReadToEnd());
return 0;
}
public static int Main(String[] args)
{
testParams();
return 0;
}
}
Anmärkning
Du kan också använda ExecuteXMLReadermethod som returnerar ett XmlReader-objekt. För mer information, se Körning av SQL-frågor med hjälp av ExecuteXMLReader-metoden.