Visual Studio.NET 2005
Olá pessoal, meu nome é Maurício Júnior. Mostrarei como popular um dataset tipado e depois gravar o mesmo em XML. Antes de tudo, para quem quiser acompanhar o desde a parte I, o mesmo pode ser visto no site www.aspneti.com ou www.aspneti.com.br.
Requisitos:
- Visual Studio.NET 2005;
- Ler a parte I;
- Básico de XML
Depois de criado o dataset, é necessário preencher o mesmo depois de fazer o select no banco de dados. É de mesma forma preencher um dataset tipado e um dataset. Faço o select, conecto no banco de dados e em seguida uso o dataadapter em seguida faço o fill para preencher o xsd. (1.1 – Parte II)
|
//pegando conexao
GetConnection (StringdeConexao);
try
{
//gerando select
StringBuilder sSql = GetSeletect();
SqlCommand cmd = new SqlCommand(sSql.ToString(), conn);
cmd.CommandTimeout = 240;
SqlDataAdapter dtAdapter = new SqlDataAdapter(cmd);
//preenchendo o dataset tipado
FechamentoDs fech = new FechamentoDs();
dtAdapter.Fill(fech, "FechProcesso");
//abrindo a conexao
conn.Open();
return fechamentoDS;
}
catch (Exception ex)
{
//gerando erro no event log
EventLog log = new EventLog();
log.Source = "Service Primeiro";
log.WriteEntry("Classe: Dall Service \r\n" +
"Método: GetSelectDadosCooperativa \r\n" +
"Mensagem de erro: " + ex.Message + "\r\n \r\n" +
"StatTrace: " + ex.StackTrace, EventLogEntryType.Error);
throw ex;
}
finally
{
conn.Close();
} |
Referência: 1.1 – Parte II
Explicação:
Antes de tudo, o código está todo comentado para melhor entendimento. Pego a conexão do meu banco de dados, logo em seguida gero o meu select usando o StringBuilder.
Uso o SqlCommando passando o select e conexão, atribuo o valor do timeout para 240, gero uma variável do tipo SqlDataAdapter com o nome dtAdapter passando como parâmetro o cmd do SqlCommand criado anteriormente.
No meu caso, o nome do dataset tipado é FechamentoDS, ou seja, lá possui todos os campos iguais a minha tabela no banco de dados.
|
//preenchendo o dataset tipado
FechamentoDs fech = new FechamentoDs();
dtAdapter.Fill(fech, "FechProcesso");
|
Referência: 1.2 Parte II
Na referência 1.2, crio uma nova instância do meu dataset, e preencho em seguida usando o dtAdapter.Fill, como parâmetro, passo a variável e em seguida coloco o nome entre aspas “FechProcesso”.
Com isso, preenchi o dataset tipado e posso retorná-lo.
Depois do mesmo preenchido é hora de criar um xml e gravar em um local do seu servidor ou computador.
Para gerar um xml com os dados preenchidos, criei um método que recebe como parâmetro o dataset tipado e com isso é gerado de uma forma dinâmica. (1.3 – Parte II)
|
public void GeraXMLDocument(FechamentoDs dtSet)
{
try
{
XmlDocument xml = new XmlDocument();
xml.LoadXml(dtSet.GetXml());
xml.Save(@ConfigurationSettings.AppSettings["CaminhoArquivo"]+"nome_"+DateTime.Now.Date.ToString("dd-MM-yyyy")+"_.xml");
}
catch (Exception ex)
{
//registra o erro no event log
EventLog log = new EventLog();
log.Source = "Service Primeiro";
log.WriteEntry("Classe: Dall Service \r\n" +
"Método: GeraXMLDocument \r\n" +
"Mensagem de erro: " + ex.Message + "\r\n \r\n" +
"StatTrace: " + ex.StackTrace, ventLogEntryType.Error);
throw ex;
}
} |
Referência: 1.3 – Parte II
Explicação:
Antes de tudo, fiz um método para executar e preencher um xml e salvando no servidor. Esse método chama-se GeraXMLDocument. Dentro do bloco try, gero um novo objeto chamado xml que é do tipo XMLDocument. A segunda linha, preencho o meu objeto xml usando o método LoadXml passando como parâmetro dtSet.GetXml(). Depois disso, basta salvar o xml na máquina, no meu caso, configurei no web.config o caminho do arquivo. Para criar o nome do arquivo, coloquei nome_data_.xml, ou seja, todo o arquivo terá o nome concatenado com a data do dia. (1.4 – Parte II).
|
xml.Save(@ConfigurationSettings.AppSettings["CaminhoArquivo"]+"nome_"+DateTime.Now.Date.ToString("dd-MM-yyyy")+"_.xml");
|
Referência: 1.4 – Parte II
Esse comando @configurationSettings é normal, estou pegando apenas o valor de minha variável dentro do web.config.(1.5 – Parte II)
|
<appSettings>
<add key="ConnectionString" value="UGVyc2lzdCBTZWN1cml0eSBJbmZvPUZhbHNlOyBQYXNzd29yZD1zYXB3ZDtVc2VyIElEPXNhO0luaXRpYWwgQ2F0YWxvZz1zcWxhZG07RGF0YSBTb3VyY2U9c3RmLWFuZHJlemE="/>
<add key="CaminhoArquivo" value="c:\" />
</appSettings> |
Referência: 1.5 – Parte II
Dentro do web.config está a key CaminhoArquivo onde o valor é o c:\. Você pode colocar qualquer caminho, ou seja, pode ser mudado de pasta sem nem mesmo recompilar a aplicação. Não posso esquecer de que estou concatenando o nome como a data do dia e depois o nome da extensão.XML.
O resultado do xml gerado pode ser visto na referência (1.5 – Parte II).

Referência: 1.5 – Parte II
Com o xml pronto, qualquer aplicação pode ler ou utilizá-la. Dessa forma fica um padrão estabelecido para quem quiser usar suas referências.
Dica: dentro de cada classe estou utilizando dentro do bloco catch uma forma de registrar o erro dentro do eventLog.
Bom, fico por aqui.
Espero ter ajudado alguma coisa...
Mauricio Junior
www.ascompras.com
www.aspneti.com
mauricio@ascompras.com
