Vamos abordar um assunto muito importante : o acesso aos dados. Quando falamos de acesso a dados logo imaginamos um banco de dados e nas formas que temos para extrair dele a informação que precisamos. Esta é na verdade uma visão um tanto simplista pois que os dados podem estar armazenados sob diversas formas. Quando falamos em dados estamos falando em informação : um número , uma figura , uma música , um texto , etc...
O acesso aos dados feito de forma tradicional usou até hoje bibliotecas , componentes e ferramentas tais como : ODBC , DAO - Data Access Objects , ADO - ActiveX Data Objects , RDO , RDS , etc. ; somente para citar a tecnologias da Microsoft.
Com a chegada da internet e sua popularização o acesso aos dados tornou-se um fator crítico. O que torna a internet fantástica é que podemos ter acesso a qualquer tipo de informação em praticamente qualquer lugar. O acesso dados tornou-se então a menina dos olhos de todo o sistema por trás da grande WEB. E como o acesso aos dados esta sendo feito ? Com as mesmas tecnologias e ferramentas usadas na década passada.
A plataforma .NET trás como uma de suas novidade a ADO.NET: uma nova tecnologia de acesso a dados que tenta resolver os problemas atuais e passa focar o acesso a dados via Internet , o acesso desconectado. Sim eu disse acesso desconectado.
A arquitetura ADO .NET ( System.Data )
Para acessar a funcionalidade ADO .NET temos que utilizar componentes para realizar as tarefas pertinentes de acesso a dados. O principal componente da arquitetura ADO .NET é o DataSet . O DataSet proporciona o acesso a tabelas , linhas , colunas , relacionamentos , constraints e pode conter diversas tabelas e relacionamentos. A seguir temos um diagrama com uma visão da arquitetura ADO.NET:
Obs: Na verdade o acesso a funcionalidade da ADO .NET é feito através do namespace System.Data da qual a ADO.NET faz parte. Assim , se quisermos ser corretos , temos que tratar realmente dos Namespaces que devem ser importados para serem usados e dos seus objetos . Vejamos um resumo da arquitetura e seus componentes:
System.Data
Expõe os objetos usados para acessar e armazenar dados através da criação de dados relacionados armazenados na memória virtual . Esses objetos são independentes da fonte de dados . O namespace System.Data contém :
- DataSet
- DataTable
- DataRow
- DataRelation
DataSet
O mais importante é a classe DataSet pois contém toda a funcionalidade para gerenciar dados armazenados na memória através de um chache de dados desconectado . Abaixo temos sua estrutura:
Podemos ver que o DataSet contém , tabelas , relacionamentos entre tabelas e cada tabela contém um conjunto de linhas e colunas.
Nota: Não tente fazer comparações com o modelo ADO pois a coisa aqui é muito diferente.
Perceba que o DataSet esta relacionado com Tabelas ( Tables ) e Relacionamentos ( Relations ) e que as tabelas contidas no DataSet pertence a classe DataTable.
Os dados internos contidos em um DataSet são mantidos no formato XML e a estrutura do DataSet é definida pelo XSD (XML Schema Definition Language) , ou seja , XML e DataSet estão intimamente ligados.
DataTable
É um objeto chave dentro do namespace System.Data . O objeto DataTable expõe as seguintes propriedades :
- Columns - A coleção Columns contém uma lista de todas as colunas contidas em uma tabela.
- Constraints - Regras de dados que são aplicadas a um tabela
- ChildRelations - É uma coleção de relacionamentos que define as relações entre as tabelas filhas e o DataTable.
- PrimaryKey - É uma matriz de objetos DataColumn que representa todas as colunas com as chaves primárias de um DataTable particular.
- Rows - Fornecem os dados atuais contidos em uma tabela. Contém uma coleção de objetos DataRow.
- TableName - Representa o nome do DataTable
DataRow
O objeto DataRow é um componente essencial do objeto DataTable. É o container para as linhas de dados dentro de uma tabela e permite as funcionalidades : Criar , Atualizar, Obter e Excluir . A seguir temos os métodos e propriedades mais importantes da classe DataRow:
- RowState - Indica o estado atual do DataRow podendo ser um dos seguintes valores:
- Added - A linha foi incluida na tabela e o método AcceptChanges() ainda não foi chamado.
- Deleted - A linha foi excluida da tabela através do método Delete().
- Detached - A linha atualmente não faz parte da tabela.
- Modified - Os dados dentro da linhas foram modificados e AcceptChanges() ainda não foi chamado.
- Unchanged - Os dados da linha não foram alterados desde a última chamada a AcceptChanges().
- BeginEdit() - Função que ativa o modo de edição do DataRow permitindo ao codigo modificar os dados de mais de uma linha de uma vez.
- CancelEdit() - Desativa o modo de edição do DataRow e decarta as alterações feitas desde que a chamada a BeginEdit() foi feita.
- Delete() - Exclui a linha atual.
- EndEdit() - Complete o modo de edição para a linha atual , salvando as alterações no DataSet desde que o método BeginEdit() foi invocado.
- AcceptChanges() - Invoca implicitamente o método EndEdit() e dependendo do status de Rowstate (ver acima) as alterações são descartadas ou efetivadas.
DataRelation
A classe DataRelation contém os dados requeridos para descrever o relacionamento entre os objetos Datatable através dos objetos DataColumn.
Ao criar uma DataRelation você esta criando um relacionamento Pai/Filho entre duas tabelas onde as colunas usadas para efetivar o relacionamento devem ser do mesmo tipo. A seguir temos um exemplo de código que cria um DataRelation e o coloca na coleção Relations do DataSet associado. ( As tabelas usadas são do banco de dados Northwind)
DataColumn Parent; DataColumn Child; Parent=DataSet.Tables["Customers"].Columns["CustId"]; Child=CustomerDataSet.Tables["Orders"].Columns["CustId"]; DataRelation CustomerOrders = new DataRelation ( "CustormersOrders", Parent , Child); CustomerDataSet.Relations.Add( CustomerOrders );
System.Data.OleDB
Este Namespace contém os objetos que fornecem a funcionalidade para acessar dados através de um provedor OLE-DB. Os provedores OLE DB usam a funcionalidade nativa do OLE DB através dos serviços COM. Podem ser usados com Oracle , MSAccess , SQL Server 6.5 e outras fontes de dados que suportem os provedores OLE DB.Os objetos são:
- OleDbConnection
- OleDbCommand
- OleDbDataSet
- OleDbDataReader
- OleDbDataAdapter
System.Data.SQLClient
Este namespace encapsula toda a funcionalidade necessária para gerenciar e manipular dados no Microsoft SQL Server.
- SQLConnection
- SQLCommand
- SQLDataSet
- SQLDataReader
- SQLDataAdapter
Obs: A Microsoft disponibiliza separadamente o provedor ODBC para acesso a fonte de dados ODBC.
Connection - é a classe que implementa a interface de conexão. (IDbConnection interface)
Command - objeto que representa uma instrução SQL or stored procedure executada através de Connection
DataAdapter - Fornece dados ao DataSet e propaga as alterações do DataSet para a fonte de dados. O serviço do DataAdpater é adpatar os dados dos objetos Command e incluí-los no DataSet e levar os dados do DataSet a fonte de dados usando objetos Command.
DataReader - É uma implementação semelhante ao cursor somente-leitura-para-frente ( forward-only ) para uma fonte de dados. Um DataReader é rápido e consome poucos recursos do sistema sendo usado para situações específicas.
Com isto temos uma visão geral , embora resumida , da arquitetura ADO.NET . Apenas lembrando que estamos na versão beta 2 e que até o lançamento da versão final algumas coisas podem ser alteradas. Sei que existem muitas novidades e que você deve estar estranhando o novo ambiente , mas , você se acostuma....
Na sequência vamos mostrar um exemplo prático de como usar toda esta teoria... : Meu primeiro acesso a dados com o VB.NET
Até lá ...
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: