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