Utilizando Datasets Tipados – Parte II

Criando a Interface de Usuário

Vamos agora adicionar funcionalidade ao programa. Adicione os componentes relacionados na Tabela 1, conforme apresentado na Figura 12.

 

Tipo componente

Nome

Propriedade

Valor

Label

lblCodigoCliente

Text

Código Cliente

TextBox

txtCodigoCliente

Text

 

Button

btnPesquisar

Text

Pesquisar

Label

lblNomeCliente

Text

Nome Cliente

TextBox

txtNomeCliente

Text

 

Label

lblContatos

Text

Contatos

DataGrid

dgContatos

 

 

Tabela 1. Relação de componentes para a interface de usuário

No Datagrid, em AutoFormat, selecionei “Classic 2”, mas como isso não faz a menor diferença para atingir nosso objetivo, não relacionei na Tabela 1.

 

 

Figura 12. Interface de Usuário no aplicativo DatasetTipado

No evento click do botão btnPesquisar, adicione o código da Listagem 1.

 

Listagem 1: Código a ser adicionado ao evento Click do botão btnPesquisar

private void btnPesquisar_Click(object sender, System.EventArgs e)

{

       dsContato ds = new dsContato();

                   

       OleDbConnection conn = new OleDbConnection(

          @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +

          Server.MapPath("Contato.mdb"));

       OleDbDataAdapter da = new OleDbDataAdapter(

          "select Nome from Cliente where ClienteID = " +

          txtCodigoCliente.Text, conn);

 

       da.Fill(ds, "Cliente");

 

       if(ds.Cliente.Rows.Count > 0)

             txtNomeCliente.Text = ds.Cliente[0].Nome;

 

       OleDbDataAdapter daContatos = new OleDbDataAdapter(

         "select * from Contato where ClienteID = " +

         txtCodigoCliente.Text, conn);

 

       daContatos.Fill(ds, "Contato");

 

       dgContatos.DataSource = ds.Contato;

       dgContatos.DataBind();

       conn.Close();

}

Entendendo o código

O código da listagem 1 não é muito diferente daquilo que você já deve estar acostumado a fazer. Por isso, vou enfatizar apenas a diferença, ou seja, onde o dataset fortemente tipado entra em ação.

Note no código a seguir que quando vou atribuir o conteúdo retornado pela pesquisa na tabela Clientes, eu estou utilizando o nome da coluna (Nome) como uma propriedade. Se não estivesse utilizando um dataset tipado, estaria fazendo uso de um array ou collection para obter o conteúdo da coluna.

 

if(ds.Cliente.Rows.Count > 0)

  txtNomeCliente.Text = ds.Cliente[0].Nome;

 

Se não estivéssemos utilizando um dataset fortemente tipado, estaríamos utilizando algo parecido com:

 

txtNomeCliente.Text =

  ds.Tables["Cliente"].Rows[0]["Nome"].ToString();

Conclusão

Datasets tipados vieram para ficar. Trata-se de um “Best Practices” que deve ser utilizada sempre que possível, pois bases de dados são mutáveis (e como!), portanto manter o acesso aos dados em uma camada isolada e fazendo uso de datasets fortemente tipados minimiza muito o impacto de uma modificação na estrutura.