Data Table – Parte I

Um dos recursos mais interessantes do Microsoft .Net é a possibilidade de trabalhar com tabelas de dados tipadas diretamente na memória.

Você pode definir uma estrutura para os dados na memória como faria em um banco de dados convencional. Além disto, pode fazer as operações convencionais como:

  • Inserir registros.
  • Executar consultas.
  • Editar os dados.
  • Definir campos calculados.
  • Excluir registro.
  • Gravar os dados em um arquivo XML no disco.

Uma aplicação sugerida para este recurso é para quando você precisar trabalhar com diversos registros na memória mas sem conectar-se ao banco de dados.

Definindo a estrutura da tabela

A classe usada para criar está em “System.Data” então, acrescente esta biblioteca nos “usings” do seu código.

Crie uma nova instância como no exemplo abaixo:


DataTable TabelaDeExemplo = new DataTable("instrumentos");

O construtor desta classe permite várias opções, no entanto, é mais comum passarmos apenas um nome para a tabela que será criada ou nem isto.

Use um nome caso você esteja planejando fazer uma das seguintes operações:

  1. Serializar a tabela no formato XML. Por exemplo, caso você esteja pretendendo trocar dados entre aplicações ou ainda enviar por Webservice.
  2. Usar a DataTable criada em conjunto com outras em um objeto DataSet por exemplo.

Criando as colunas

Em uma tabela você tem as colunas sendo que cada uma pode ser de um determinado tipo de dado.

Uma maneira básica de definir a estrutura da tabela é criando um objeto do tipo “DataColumn” especificando os principais atributos como nome da coluna e o tipo do dado e outros que possam ser necessários e adicionar este objeto ao construtor.

Isto pode ser feito de várias formas. Classicamente, poderia ser feito assim:


// expecifica o objeto DataColumn
DataColumn coluna = new DataColumn( "IdInstrumento", typeof( System.Int32 ) );
// Configura os principais atributos
coluna.AutoIncrement = true;
coluna.AutoIncrementSeed = 1;
coluna.AutoIncrementStep = 1;
// Envia para a tabela
TabelaDeExemplo.Columns.Add( coluna );

Uma maneira mais direta de fazer isto seria como segue:


TabelaDeExemplo.Columns.Add(
    new DataColumn
    {
        ColumnName = "IdInstrumento",
        DataType = typeof( System.Int32 ),
        AutoIncrement = true,
        AutoIncrementSeed = 1,
        AutoIncrementStep = 1
    });

A coluna que acabamos de criar é do tipo “Auto incremento” ou seja, o seu valor é definido automaticamente pelo framework sem ser necessário preencher.

Considere uma tabela para armazenar os dados como a que segue, sendo que todos os campos são do tipo “string”:

  1. Tipo.
  2. Marca.
  3. Modelo.
  4. AnoDeFabricacao.

O código para criar estas colunas na memória ficaria mais ou menos da seguinte forma:


TabelaDeExemplo.Columns.Add( new DataColumn( "Tipo", typeof( System.String ) ) );
TabelaDeExemplo.Columns.Add( new DataColumn( "Marca", typeof( System.String ) ) );
TabelaDeExemplo.Columns.Add( new DataColumn( "Modelo", typeof( System.String ) ) );
TabelaDeExemplo.Columns.Add( new DataColumn( "AnoDeFabricacao", typeof( System.String ) ) );

Observe que para definirmos o tipo do dado da coluna usamos o método estático “typeof()”. Este método precisa receber como parâmetro um dos tipos de dados da biblioteca System.

Aguarde para o próximo post como faremos para incluir e listar registros para esta tabela.