sábado, 31 de julho de 2010

Mini-Curso C# - Parte #7 - ADO.NET

O que é ADO .NET

ADO .NET é a nova tecnologia para acesso a dados da plataforma .NET estando integrada ao .NET Framework e oferecendo diversas classes que permitem realizar praticamente todas as tarefas relacionadas com o acesso e
manutenção de dados.

ADO .NET oferece suporte a uma variedade de opções para desenvolvimento
de soluções com acesso a dados que permitem a comunicação com qualquer
fonte de dados, desde os já conhecidos gerenciadores de banco de dados relacionais (SGBD) como : SQL Server, MySQL, FireBird, Oracle, Sybase, Access, XML, arquivos textos, etc.

Os componentes considerados os pilares da ADO.NET são o DataSet e os provedores .NET que são um conjunto de componentes que incluem os objetos:

Connection - responsável por efetuar a conexão com o banco de dados  

Command - responsável por executar comandos contra o banco de dados

DataAdapter - é utilizado para preecher o objeto DataSet;

O ADO.NET pode acessar dados de várias maneiras: OLE DB , ORACLE, SQL, ODBC e driver de terceiros como os do FireBirb.

Cada objeto possui uma versão para cada uma das maneiras aqui mencionadas, assim temos os objetos:

OleDbConnection, OleDbCommand, OleDbDataReader, OleDataAdapter;

SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter;

OdbcConnection, OdbcCommand,etc.


Arquitetura ADO.NET


A diferença entre DataReader e DataSet

Quando falamos de desempenho, a utilização de um DataReader leva vantagem, pois obtém o acesso aos dados assim que o objecto fica disponível, ao contrário do DataSet, é necessário aguardar para que este fique preenchido, além disso o DataReader é do tipo ForwardOnly, ou seja, dados
que são unicamente de leitura e com o acesso desde o primeiro registro até ao último. Já com o DataSet pode-se “andar” para a frente ou para trás nos dados.

Afinal DataSet ou DataReader ?

Para decidir se você deve usar um DataSet ou um DataReader em sua aplicação de acesso a dados, você deve considerar o nível de funcionalidade que vai precisar usar na sua aplicação.

Você deve usar um DataSet em sua aplicação quando:
  • você precisar trabalhar com mais de uma tabela de dados simultaneamente.
  • Você precisar de navegação entre múltiplas tabelas de resultados.
  • você precisar manipular dados de múltiplas fontes: banco de dados , arquivos XML, arquivos textos, planilhas eletrônicas, etc...
  • você precisar trocar dados entre camadas ou usar um Web Service XML.
  • você precisar reutilizar o mesmo conjunto de linhas para alcançar desempenho através de cache de dados (via ordenação, busca ou filtro de dados)
  • você precisar efetuar uma grande quantidade de processamento por linha.
  • você precisar manipular dados usando operações XML como XLST ou consultas XPath.
Você deve usar um DataReader em sua aplicação quando:
  • Você precisar trabalhar somente com uma tabela de dados por vez
  • você não precisar usar cache de dados
  • você precisar somente exibir os dados de uma tabela
  • você precisar acessar de forma rápida e de uma vez os dados de uma forma somente-leitura e somente-para-frente
  • você precisar processar uma quantidade de dados muito grande para caber na memória
Nota: O DataAdapter usa o DataReader par preencher o DataSet. Desta forma , o desempenho ganho pela utilização do DataReader é que você salva na memória os dados que o DataSet irá consumir.

Em resumo: utilize um DataReader sempre que você puder, deixando a utilização de um DataSet para os casos realmente necessários.


Take care