ADO.NET - Uma visão geral II : O objeto  DataTable


 

Continuando o artigo - ADO.NET - Uma visão geral I :  Objetos Connection ,  Command e DataReader - vamos tratar do objeto DataTable  antes disto fiquei pensando em falar um pouco sobre as diferenças entre ADO e ADO.NET.

 

Se você conhece um pouco de ADO já sabe que ela é uma tecnologia de acesso a dados ideal para ambientes de redes locais , mas quando pensamos em aplicações distribuídas na Internet enfrentamos os seguintes problemas :

  1. A conexão não é estável ()
  2. A transmissão de dados é lenta
  3. O acesso concorrente pode chegar a milhares de usuários.

A ADO.NET já foi criada para trabalhar com o acesso desconectado aos dados e faz a conexão com a fonte de dados através de um objeto DataAdapter ( SqlDataAdapter e OleDbDataAdapter) e não através de um provedor OLE DB como a ADO , com isto o desempenho é otimizado.
 

 

A ADO tenta resolver estes problemas fornecendo um modelo onde podemos até usar o objeto Recordset para acesso a dados desconectado, onde os dados são gerenciados em memória . Quando se trata de acesso a dados o objeto Recordset é a principal ferramenta que a ADO oferece , , o problema é que o objeto Recordset representa uma única tabela de dados , e se você precisar trabalhar com dados de mais de uma tabela vai ter que recorrer a SQL.

 

A ADO.NET oferece o objeto DataSet que pode representar na memória muitas tabelas. Os objetos DataTable são usados para representar e tratar estas tabelas ; além disto podemos criar relacionamentos entres estas tabelas através de objetos DataRelation. Desta forma o DataSet consegue ser uma representação mais próxima do banco de dados.

 

No quesito  de dados basta dizer que enquanto a ADO se baseia na COM a ADO.NET se baseia em XML.  Dados no formato XML são mais fáceis de trafegar pela rede mundial , visto ser apenas texto , e não precisa de conversão alguma.

 

Neste artigo vou focar a atenção nos objetos DataTable e DataView.

 

O objeto DataTable

 

Como já dissemos um objeto DataTable representa uma ou mais tabelas de dados em memória. Os objetos DataTable estão contidos no objeto DataSet e/ou DataView.  Abaixo temos uma relação das principais propriedades do objeto DataTable:

 

Vamos criar um objeto DataTable via código com os seguintes campos : Código , Nome e Endereço ; para isto temos que seguir os seguintes passos :

Obs: a estrutura da tabela a ser criada deve ser :

 

1 - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : TesteDataTable1
  4. Location : c:\vbnet\TesteDataTable1

2- A seguir inclua no formulário padrão - form1.vb - um controle DataGrid e um controle - Button - conforme abaixo:

 

 

3- No evento Click do botão - Button - vamos inserir o código que cria o objeto DataTable:

 

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'cria um objeto DataTable

Dim dtTesteTabela As DataTable = New DataTable("TesteTabela")

'declara as variáveis objetos DataColumn e DataRow

Dim dcColuna As DataColumn

Dim drLinha As DataRow

 

'campo codigo

'Criamos uma coluna(Datacolumn)para o campo código definindo o tipo (DataType)

'e nome da coluna (ColumnName)

dcColuna = New DataColumn()

dcColuna.DataType = System.Type.GetType("System.Int32")

dcColuna.ColumnName = "Codigo"

dcColuna.ReadOnly = True

dcColuna.Unique = True

dtTesteTabela.Columns.Add(dcColuna)

 

'campo nome

'Criamos uma coluna(Datacolumn)para o campo nome definindo o tipo (DataType)

'e nome da coluna (ColumnName)

dcColuna = New DataColumn()

dcColuna.DataType = System.Type.GetType("System.String")

dcColuna.ColumnName = "Nome"

dcColuna.ReadOnly = False

dcColuna.Unique = False

dtTesteTabela.Columns.Add(dcColuna)

 

'campo endereco

'Criamos uma coluna(Datacolumn)para o campo nome definindo o tipo (DataType)

'e nome da coluna (ColumnName)

dcColuna = New DataColumn()

dcColuna.DataType = System.Type.GetType("System.String")

dcColuna.ColumnName = "Endereco"

dcColuna.ReadOnly = False

dcColuna.Unique = False

dtTesteTabela.Columns.Add(dcColuna)

 

'inclui alguns dados na tabela

drLinha = dtTesteTabela.NewRow

drLinha("Codigo") = 1

drLinha("Nome") = "José Carlos Macoratti"

drLinha("Endereco") = "Rua Lins , 100"

 

'inclui a linha na tabela

dtTesteTabela.Rows.Add(drLinha)

 

'inclui alguns dados na tabela

drLinha = dtTesteTabela.NewRow

drLinha("Codigo") = 2

drLinha("Nome") = "Janice Rachel Macoratti"

drLinha("Endereco") = "Rua Mirassol , 150"

 

'inclui a linha na tabela

dtTesteTabela.Rows.Add(drLinha)

 

'inclui alguns dados na tabela

drLinha = dtTesteTabela.NewRow

drLinha("Codigo") = 3

drLinha("Nome") = "Jefferson Andre Macoratti"

drLinha("Endereco") = "Rua Girassol , 110"

'inclui a linha na tabela

dtTesteTabela.Rows.Add(drLinha)

 

'inclui a tabela no dataset

Dim dtTesteDataSet1 As DataSet = New DataSet()

dtTesteDataSet1.Tables.Add(dtTesteTabela)

 

'vincula o dataset1 ao datagrid1

DataGrid1.SetDataBinding(dtTesteDataSet1, "TesteTabela")

End Sub

 

Ao executar o projeto e clicar no botão para criar a tabela teremos :

 

 

Leia a continuação deste artigo em : ADO.NET - Uma visão geral III : O objeto  DataView ...

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti