Criando XML a partir de um DATASET tipado – Parte II
Visual Studio.NET 2005
Olá pessoal, meu nome é Maurício Júnior. Mostrarei como popular um dataset tipado e depois gravar o mesmo
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
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.