Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
W tym przykładzie pokazano:
Tworzenie parametrów (obiektów SqlXmlParameter).
Przypisywanie wartości do właściwości (Nazwa i Wartość) obiektów SqlXmlParameter.
W tym przykładzie wykonywane jest proste zapytanie SQL, aby uzyskać imię, nazwisko oraz datę urodzenia pracownika, którego wartość nazwiska jest przekazywana jako parametr. Przy określaniu parametru (LastName) ustawia się tylko właściwość Value. Właściwość Nazwa nie jest ustawiona, ponieważ w tym zapytaniu parametr jest pozycyjny i nie jest wymagana nazwa.
Domyślnie właściwością CommandType obiektu SqlXmlCommand jest Sql. Dlatego własność nie jest jawnie ustalona.
Uwaga / Notatka
W kodzie musisz podać nazwę instancji Microsoft SQL Server w ciągu połączeń.
To jest kod C#:
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;
}
}
Aby przetestować aplikację
Zapisz kod C# (DocSample.cs) udostępniony w tym temacie w folderze.
Skompiluj kod. Aby skompilować kod w wierszu poleceń, użyj następująco:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csTworzy to plik wykonywalny (DocSample.exe).
W wierszu poleceń wykonaj DocSample.exe.
Aby przetestować ten przykład, musisz mieć zainstalowany Microsoft .NET Framework na swoim komputerze.
Zamiast określać zapytania SQL jako tekst polecenia, możesz określić szablon (jak pokazano w poniższym fragmencie kodu), który wykonuje updategram (który jest również szablonem), aby wstawić rekord klienta. Możesz określać szablony i updategramy w plikach oraz pliki wykonywać. Więcej informacji można znaleźć w artykule Wykonanie plików szablonu za pomocą właściwości 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;
Wykorzystanie ExecuteToStream
Jeśli masz już strumień, możesz użyć metody ExecuteToStream zamiast tworzyć obiekt strumienia i używać metody Wykonanie. Kod z poprzedniego przykładu został tutaj zmodyfikowany, aby użyć metody ExecuteToStream:
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;
}
}
Uwaga / Notatka
Możesz także użyć metody ExecuteXMLReader, która zwraca obiekt XmlReader. Więcej informacji można znaleźć w artykule Wykonywanie zapytań SQL metodą ExecuteXMLReader.