Comparação entre o ADO.NET e o ADO
Você pode compreender os recursos do ADO.NET comparando-os com os recursos específicos do ActiveX Data Objects (ADO).
Representações em memória dos dados
No ADO, a representação em memória dos dados é o recordset.No ADO.NET, é o dataset.Existem diferenças importantes entre eles.
Número de tabelas
Um recordset parece com uma única tabela.Se for para um recordset conter dados de múltiplas tabelas de banco de dados, ele deverá usar uma consulta JOIN, que reúne os dados das várias tabelas de banco de dados em uma tabela de resultado única.
Em contraste, um dataset é uma coleção de uma ou mais tabelas.As tabelas em um dataset são chamadas de tabelas de dados; especificamente, elas são objetos DataTable.Se um dataset contém dados de múltiplas tabelas de banco de dados, ele normalmente conterá múltiplos objetos DataTable.Isto é, cada objeto DataTable geralmente corresponde a uma única tabela de banco de dados ou view.Desta forma, um dataset pode imitar a estrutura do banco de dados subjacente.
Um dataset normalmente também contém relacionamentos.Um relacionamento em um dataset é parecido com um relacionamento de chave externa em um banco de dados — isto é, ele associa linhas de tabelas entre si.Por exemplo, se um dataset contiver uma tabela sobre investidores e outra tabela sobre cada aquisição de ações do investidor, ele também pode conter um relacionamento conectando cada linha da tabela do investidor com as linhas correspondentes da tabela de aquisição.
Como o dataset pode armazenar tabelas múltiplas, separadas, e manter informações sobre relacionamentos entre elas, ele pode armazenar estruturas de dados muito mais detalhadas que um recordset, incluindo tabelas com autorreferências e tabelas com relações muitos-para-muitos.
Navegação de dados e cursores
No ADO você faz varredura sequencialmente através das linhas do recordset usando o método MoveNext do ADO.No ADO.NET, as linhas são representadas como coleções, então você pode fazer loop através de uma tabela como você faria através de qualquer coleção, ou acessar determinadas linhas via índice ordinal ou de chave primária.Objetos DataRelation mantêm informações sobre registros mestre e de detalhe e fornecem um método que permite que você obtenha registros relacionados ao que você está trabalhando.Por exemplo, iniciando da linha da tabela Investor para "Nate Sun," você pode navegar para o conjunto de linhas da tabela Purchase descrevendo suas compras.
Observação: |
---|
Aplicativos do Windows Forms fornecem o BindingNavigator para navegar pelos registros em uma fonte de dados. Para obter mais informações, consulte BindingNavigator Controlar (Windows Forms). |
Um cursor é um elemento de banco de dados que controla a navegação de registro, a capacidade de atualizar dados e a visibilidade das alterações feitas no banco de dados por outros usuários.O ADO.NET não têm um objeto cursor inerente mas, em vez disso, inclui classes de dados que fornecem a funcionalidade de um cursor tradicional.Por exemplo, a funcionalidade de um cursor somente encaminhamento ou somente leitura está disponível no objeto DataReader do ADO.NET.
Conexões de abertura minimizadas
No ADO.NET você abre conexões somente por tempo suficiente para executar uma operação de banco de dados, tais como Select ou Update.Você pode ler linhas em um dataset e depois trabalhar com elas sem permanecer conectado à fonte de dados.No ADO, o recordset pode fornecer acesso desconectado, mas o ADO é projetado principalmente para acesso conectado.
Há uma diferença significativa entre processamento desconectado no ADO e ADO.NET.No ADO você se comunicar com o banco de dados fazendo chamadas para um provedor OLE DB.No ADO.NET, você se comunica com o banco de dados através de TableAdapters ou de adaptadores de dados (por exemplo, SqlDataAdapter), que fazem chamadas a um provedor OLE DB ou às APIs fornecidas pela fonte de dados subjacente.A importante diferença é que o adaptador permite que você controle como as alterações no dataset serão transmitidas para o banco de dados — pode ser otimizando para desempenho, executando verificações de validação de dados ou adicionando qualquer outro processamento extra.
Compartilhando dados entre aplicativos
Transmitir um dataset do ADO.NET entre aplicativos é bem mais fácil que transmitir um recordset do ADO desconectado.Para transmitir um recordset do ADO desconectado de um componente para outro, você usa empacotamento COM.Para transmitir dados no ADO.NET, você usa um dataset, que pode transmitir um fluxo de XML.
A transmissão de arquivos XML oferece as seguintes vantagens sobre empacotamento COM:
Tipos de dados mais detalhados
Empacotamento COM fornece um conjunto limitado de tipos de dados — aqueles definidos pelo padrão COM.Devido à transmissão de datasets no ADO.NET ser baseada em um formato XML, não há nenhuma restrição sobre tipos de dados.Assim, os componentes compartilhando o dataset podem usar qualquer conjunto detalhado de tipos de dados que eles normalmente usariam.
Desempenho
Transmitir um grande recordset do ADO ou um grande dataset do ADO.NET pode consumir recursos de rede; à medida que a quantidade de dados cresce, o estresse colocado na rede também aumenta.O ADO e o ADO.NET permitem que você minimize os dados que são transmitidos.Mas ADO.NET oferece outra vantagem de desempenho, pois o ADO.NET não requer conversões de tipo de dados.O ADO, que requer empacotamento COM para transmitir recordsets entre componentes, exige que tipos de dados do ADO sejam convertidos em tipos de dados COM.
Penetrando Firewalls
Um firewall pode interferir em dois componentes tentando transmitir recordsets do ADO desconectados.Lembre-se, firewalls normalmente são configurados para permitir que textos em HTML passem, mas também para impedir que solicitações de sistema (como empacotamento COM) passem.
Devido ao fato de componentes trocarem datasets do ADO.NET usando XML, firewalls podem permitir que datasets passem.
Consulte também
Conceitos
Outros recursos
Guia de Introdução para acesso a dados
Conectando-se a Dados no Visual Studio
Preparando seu aplicativo para receber dados
Buscando dados em seu aplicativo
Exibindo dados em formulários em aplicativos do Windows