Desenvolvendo aplicações utilizando XML
Bom pessoal, hoje em dia é comum em ouvir falar de arquivos XML, mas o que são estes arquivos.
XML vem de eXtensible Markup Language ou Linguagem padronizada de marcação capaz de descrever diversos tipos de dados, bastante utilizado na Internet para transferência de informações e entre outras funcionalidades.
Bom, neste artigo irei demonstrar que os arquivos XML podem ser utilizados como um Banco de Dados, armazenando os dados inseridos em uma aplicação e permitindo realizar pesquisas, alteração e exclusão destes dados.
Para isto iremos criar um projeto do tipo Windows Application, conforme imagem da Figura 1.
Figura 1 – Criando um novo projeto do tipo Windows Application.
Após ter criado o projeto, iremos preparar nossa Base de Dados, iremos inserir um DataSet.xsd, em Adicionar Novo item -> DataSet, como pode ser visualizado na Figura 2.
Este DataSet utilizaremos para criarmos todas as tabelas que nossa aplicação utilizará, podendo criar relações, chaves primárias e outras funcionalidades que possui em um Banco de Dados.
Figura 2 – Adicionando um DataSet.xsd.
Ao adicionar o DataSet, aparecerá uma região onde poderemos iniciar a criação das tabelas, sendo que no Toolbox já aparecerá todos os itens que poderão ser adicionados naquela região, conforme pode ser visto na Figura 3.
Figura 3 – Criando as tabelas no DataSet.
Chamamos este DataSet de DataSet Tipado, devido o mesmo já possuir o Schema referente à estrutura das tabelas. Sendo assim criaremos todos os objetos para nossa aplicação neste DataSet.
Sempre que precisar alterar uma propriedade de coluna recém criada, como por exemplo alterar o tipo da mesma, isso você conseguirá indo na PropertyGrid de propriedades.
Figura 4 – Estrutura do Banco de Dados.
Na Figura 4 podemos verificar como ficou a estrutura do nosso Banco de Dados. Definimos as chaves primárias das tabelas, informamos campos que são Auto Incremento (Codfun, CodCargo, CodCid) e ainda fizemos as relações.
Sendo assim, vamos prosseguir o desenvolvimento de nossa aplicação, desenvolvendo os forms para que possamos inserir dados nestas tabelas.
No final teremos em nossa aplicação quatro forms, um menu principal e um form para cada tabela que criamos, como pode ser visto nas imagens abaixo.
Figura 5 – Tela de cadastro de Cidades.
Figura 6 – Tela de cadastro de Cargos.
Figura 7 – Tela de cadastro de Funcionários.
Depois de desenvolvido os forms, será necessário ligar os campos da tela com os campos criados no DataSet.
Para os campos TextBox para setar a propriedade de DataBinding é necessário informarmos qual DataSource e qual campo que este estará ligado, conforme Figura 8.
Figura 8 – Setando DataBinding para os controles TextBox
Assim será gerado automaticamente no form um DataSet e um BindingSource. Será necessário também inserir um BindingNavigator, que será responsável por inserir, excluir e navegar nos dados. Ao inserir o BindingNavigator é necessário informar qual o BindingSource que este utilizará, que por sinal é o que foi criado automaticamente.
Para que possamos gravar e recuperar estes dados será necessário criar três eventos. No Load do Form, será carregado os dados do arquivo XML, ao salvar e excluir os dados, o arquivo será reescrito, conforme Listagem 1.
private void saveToolStripButton_Click(object sender, EventArgs e)
{
BSCidade.EndEdit();
dataSet11.WriteXml(@"C:\xml.xml");
MessageBox.Show("Dados salvos com sucesso!");
}
private void Cidade_Load(object sender, EventArgs e)
{
if (System.IO.File.Exists(@"C:\xml.xml"))
dataSet11.ReadXml(@"C:\xml.xml");
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
dataSet11.WriteXml(@"C:\xml.xml");
MessageBox.Show("Dados excluídos com sucesso!");
}
Listagem 1 – Eventos necessários em todos os forms.
Com estes eventos, o form conseguirá recuperar os dados salvos do arquivo, excluir e salvar os dados no arquivo em disco, neste exemplo será salvo em C:\xml.Xml.
Como a tabela de Funcionários possui FK com as Tabelas de Cargo e Cidade, precisamos disponibilizar os valores destas tabelas para que o usuário consiga gravar todos os dados do Funcionário.
Para isto utilizamos um ComboBox para carregar todos os valores das tabelas Fk´s, mas para isto utilizamos somente configurações, como mostra a Figura 9.
Figura 9 – Setando propriedades do ComboBox para funcionar como LookUp
Como pode ser visto na figura acima, as propriedades marcadas são necessárias para que o ComboBox possa funcionar como LookUp. Segue a explicação de cada uma:
DataSource: BindingSource da tabela FK, carregado com todos os campos.
DisplayMember: Campo da tabela Fk que será apresentado no ComboBox.
ValueMember: Valor que será atribuído no registro corrente quando um item do ComboBox for selecionado.
SelectedValue: Campo da tabela corrente que receberá o valor do item do ComboBox selecionado.
Após terminar estas configurações para as nossas duas tabelas Fk´s, a nossa aplicação estará completa, permitindo salvar, excluir e recuperar os dados, trabalhando tudo com XML.
Espero que tenha sido de grande valia este artigo e até o próximo.