Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Este exemplo demonstra:
Criação de parâmetros (objetos SqlXmlParameter).
Atribuição de valores às propriedades (Nome e Valor) dos objetos SqlXmlParameter.
Neste exemplo, é executada uma consulta SQL simples para recuperar o nome, apelido e data de nascimento do colaborador cujo valor de apelido é passado como parâmetro. Ao especificar o parâmetro (ApelidoNome), apenas a propriedade Valor é definida. A propriedade Nome não está definida, porque nesta consulta o parâmetro é posicional e não é necessário nome.
A propriedade CommandType do objeto SqlXmlCommand, por defeito, é Sql. Portanto, a propriedade não é explicitamente definida.
Observação
No código, deve fornecer o nome da instância do Microsoft SQL Server na cadeia de ligação.
Este é o código 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;
}
}
Para testar a aplicação
Guarde o código C# (DocSample.cs) fornecido neste tópico numa pasta.
Compila o código. Para compilar o código no prompt de comandos, use:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csIsto cria um executável (DocSample.exe).
No prompt de comandos, execute DocSample.exe.
Para testar este exemplo, deve ter o Microsoft .NET Framework instalado no seu computador.
Em vez de especificar consultas SQL como texto de comando, pode especificar um modelo (como mostrado no fragmento de código seguinte) que executa um updategram (que também é um modelo) para inserir um registo de cliente. Podes especificar modelos e updategrams em ficheiros e executar ficheiros. Para mais informações, consulte Executar ficheiros de modelo usando a propriedade 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;
Usando o ExecuteToStream
Se tiver um stream existente, pode usar o método ExecuteToStream em vez de criar um objeto Stream e usar o método Executar. O código do exemplo anterior é revisto aqui para usar o método 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;
}
}
Observação
Também pode usar o método ExecuteXMLReadermethod que devolve um objeto XmlReader. Para mais informações, consulte Executando Consultas SQL Usando o Método ExecuteXMLReader.