ADO.NET Introdução e Visao Geral



ADO.net é o nome de uma biblioteca de acessos a banco de dados. Você pode usar linguagem ADO.net a partir de qualquer linguagem disponível na plataforma como: VB.net, C#, C++ e J#. As vantagens do ADO.net em relação aos seus antecessores, é que existe um suporte para bancos de dados desconectados, este recurso é importante na criação de aplicativos web, aplicativos com arquitetura multicamadas e também para melhorar a desempenho de acesso ao banco de dados em linhas de comunicação que tem confiabilidade e velocidade baixas.
O ADO.net também traz suporte ao padrão XML que já é consagrado para a troca de informações entre computadores e adotado em grandes e importantes empresas de informática. Este suporte a XML facilita muito a integração de programas .NET, outros programas rodando na plataforma .NET e outras plataformas. O XML também é usado na troca de informações, através de WebService que acessam banco de dados através do ADO.net.
O ADO.net possui vários recursos para trabalhar de forma integrada com o Visual Studio.net, principalmente a partir da versão 2005. A arquitetura dos componentes do ADO.net, foram elaboradas com uso do paradigma RAD que usa propriedades, métodos e eventos, alem disso tem-se diversos assistentes que facilitam o desenvolvimento de software com ferramenta visual.
O ADO.net é implementado em diversas classes, que se resume em duas grandes classes, uma classe que contem dados e uma classes que acessam dados. A classe que contem dados é a chamada de "Data Classes" onde usamos o modo desconectado de acesso a dados, já na classe que acessam dados a chamada "Managed Providers" trabalha-se de maneira conectada.
A "Data Classes" contem os dados, mas não sabe como obte-los nem sabe de onde eles vieram, elas funcionam como uma representação em memória de dados relacionais não estando conectadas ao banco de dados diretamente. A principal classe que contem dados é a "DataSet", que funciona como um banco de dados em memória.O "DataSet" contem uma coleção de "DataRelation" e outra de "DataTables" que apresentam os "DataColumns" e "DataRows" formando assim a representação completa do banco de dados.
O segundo grupo, o "Managed Providers", é formado por classes de acesso de banco de dados. São classes que não armazenam dados diretamente, mas sabem ler e escrever dados em banco de dados físicos, como SQL Sever ou Oracle.
O "Managed Providers", é um conjunto de classes concretas que implementam três interfaces principais e algumas outras auxiliares. Cada interface dita um comportamento especifico, por exemplo:
• "IDbConnection", diz como deve ser o comportamento de uma classe que gerencia uma conexão com o banco de dados.
• "IDbCommand" encapsula o comportamento de um comando SQL.
• "IDataReader" encapsula um cursor só de leitura e só para frente.

O ADO.net vem com quarto "Managed Providers", para acesso direto ao SQL Server, Drives OLEDB, Oracle e ODBC. As classes de acesso sempre tem um prefixo que identifica a família na qual pertencem, por exemplo: a classe que implementa IDbConnection para conexão com o SQL Server, chama SQLConnection.
A interface IDbConnection, abstrai uma conexão para um banco de dados físico, como o SQL Server por exemplo, sendo que sua propriedade mais importante é uma string de conexão a "ConnectioString" que informa detalhes da conexão, como nome do servidor, nome do banco de dados e usuário e senha.
Seus principais métodos são: "Open" e "Close" que respectivamente abrem e fecham a conexão e também os métodos necessários para controle da transação. Essa classe trabalha junto com um "cache" de conexões de forma a permitir que os métodos "Open" e "Close" chamados com freqüência pelos aplicativos, sejam executados rapidamente.

A interface IDbCommand, é usada para executar consultas, e chamar "StoredProcedures", informando os parâmetros quando necessário. Os principais métodos e propriedades são destinado à execução de comando SQL, invocação de "StoredProcedures" e manipulação de parâmetros. Existem três maneiras de executar um comando SQL ou invocar "StoredProcedures":

Método "ExecuteReader" que executa um comando e retorna um cursos apenas de leitura, capaz de acessar um conjunto de resultados. É utilizado com a maioria dos comandos SQL SELECT retornando um "IDataReader".
Método "ExecuteNonQuery" é usado com comandos SQL que executam mas não retorna um conjunto de dados como resposta, por exemplo: INSERT, UPDATE e DELETE.

Método "ExecuteScalar" é usando em conjunto com comandos que retornam apenas valores simples, como uma string ou um numero. Como exemplo um comando SELECT COUNT, retorna um numero e deve ser chamado como "ExecuteScalar".

A interface "IDataReader" é usada para obter um conjunto de resultado, tipicamente é uma resposta a uma chamada do método "ExecuteReader" da interface "IDbCommand". A classe que implementa o "IDataReader" em si, não contem os dados. Ele abstrai um cursos de alta performance que pode ser usado apena na leitura para frente do conjunto de resultado.

A classe "DataSet" é a mais importante de todas. Ela funciona como um banco de dados em memória, este banco de dados pode conter varias tabelas e também relacionamentos entre as tabelas. AS tabelas representadas pela classe "DataTable", pode conter colunas de vários tipos como: colunas calculadas, linhas com dados, restrições e ate chaves primarias.
A classe "DataSet" nunca está conectada a um banco de dados físico. Na verdade ela nunca sabe qual é a origem do dados. Os dados que podem ter origem de uma consulta no banco de dados físico, podem ter vindo de um arquivo "XML" ou mesmo ter sido montado pelo próprio programa. As tabelas contidas em um "DataSet" são enxergadas como um "Array", e não através de um cursor.
Opcionalmente os "DataSets" podem ser tipados de forma a efetuar verificações de nomes e tipo das colunas em tempo de compilação. Tantos os "DataSets" como as tabelas neles contidas podem ser ligados a "DataControls", como o “GridView”, o “FormView” ou o “DataList” para facilitar a edição.
O “DataSet” também suporta comandos de atualização em lotes e apesar de poder existir sozinho, quando estamos interessado em acessar banco de dados relacionais, como o SQL Server por exemplo, e comum usa uma classe que implementa o “IDataAdapter” para mediar às interações entre o “DataSet” e o banco de dados. Como o “DataSet” pode conter varias tabelas, é comum ele conter dados de varias fontes de dados.
Os “DataSets tipados” são uma facilidade opcional oferecida aos programadores que usam o ADO.net em conjunto com o Visual Studio.net. Os “DataSets tipados”, são classes derivadas de “DataSets” que incorporam propriedades e tipos adicionais correspondentes a uma ou mais tabelas.
Estas tabelas podem ser definidas a partir de “schemas XSD” ou classes concretas que implementam “IDbDataAdapter”. Nos “DataSets Tipados”, as tabelas e as colunas das tabelas, são automaticamente mapeadas a propriedades do “DataSet”. Existem varias vantagens nesse “schema”, pois não só o código fica mais compacto e fácil de ler como também os nomes de campos de tipos, são validados em tempo de compilação evitando-se erros em tempo de execução.
Um exemplo de código em Visual Basic.net acessando um “DataSet Tipado”:
Dim rowCustomer As System.Data.DataRow
For Each rowCustomer In MyDataSet.Tables("Customers").Rows
Dim CN as string = CStr(rowCustomer.Fields("CompanyName"))
Console.WriteLine(CN)
Next

Observe o código para exibir todas as colunas “Comapnyname” sem o uso de “DataSet Tipado” e compare agora com o uso de “DataSet Tipado” logo abaixo.
Dim rowCustomer As System.Data.DataRow

For Each rowCustomer In MyDataSet.Customers.Rows
Dim CN as string = rowCustomer.CompanyName
Console.WriteLine(CN)
Next

Podemos notar as vantagens de usarmos “DataSets Tipados”, sendo que o código ficou mais compacto e o compilador pode validar os nomes e tipos das colunas em tempo de compilação.
A principal função da interface “IDbDataAdapter” é mediar à interação entre a classe “DataSet” e bancos de dados reais. Para isto a classe que implementa o “IDbDataAdapter” contem um comando SQL de consulta que é usualmente um comando SQL SELECT. Este comando é usado para preencher uma tabela dentro de um “DataSet” e, além disso, ele possui os três comandos de atualização, que são: Inserção, Exclusão e Atualização, logicamente relacionadas à consulta.

O método “Fill” preenche o “DataSet”, executando a conexão ao banco de dados, a consulta e a desconexão. Depois de alterado o “DataSet” chamamos o método “Update” para aplicar as modificações de volta ao banco de dados. O “IdbDataAdapter” permite também o mapeamento dos nomes das colunas usados nas consultas em relação aos nomes usados no “DataSet”.
O “DataView” é uma classe que corresponde ao um “View” no banco de dados em memória que é o “DataSet”. Esta classe pode estabelecer filtros e critérios sem que seja necessário submeter um novo comando SQL na base de dados, todas as interações com o “DataView” são executadas em memória. É possível criar vários “DataViews” para um mesmo “DataTable”. Os “DataViews” podem também serrem associados a um “DataControl”.
Os “DataControls” embora não sejam tecnicamente parte da arquitetura. NET, são componentes visuais que podem interagir facilmente com as classes da biblioteca ADO.net. A vantagem dos “DataControls” é que podemos criar aplicativos que acessam banco de dados com pouco ou nenhum código de programação, através do ajuste de propriedades de componentes e uso de assistentes do Visual Studio.net.
Concluindo o ADO.net é uma biblioteca de extrema flexibilidade e especialmente desenvolvida para interagir com a internet, pela sua natureza desconectada e pelo amplo suporte a XML. Graças ao suporte RAD, o ADO.net é também bem mais fácil de usar.
Autor: Rodolfo Leão Duarte Silva


Artigos Relacionados


Linguagem De Acesso A Banco De Dados Relacional:

Criação De Bando De Dados Msql No Cpanel

Integração De Banco De Dados De Fontes Heterogêneas

Como Criar Um Linked Server Com Sql Server 2008 E Sua Utilidade

Banco De Dados

Vantagens Na Utilização Do Oracle Golden Gate Na Replicação

Srw: Sistema De ReplicaÇÃo De Banco De Dados Via Web