Desenvolvimento - ADO.NET

Acessando banco de dados em .NET

Na grande maioria dos sistemas comerciais dos dias de hoje é imprescindível a manipulação de alguma base de dados. Para você que está usando a plataforma .NET (e, portanto, já está mudando a maneira de ver a vida), está na hora de falarmos um pouco de uma maneira mais eficaz de manipular dados. Esse artigo é o primeiro de uma série de 3.

por Marden Menezes



Na grande maioria dos sistemas comerciais dos dias de hoje é imprescindível a manipulação de alguma base de dados. Para você que está usando a plataforma .NET (e, portanto, já está mudando a maneira de ver a vida), está na hora de falarmos um pouco de uma maneira mais eficaz de manipular dados. Esse artigo é o primeiro de uma série de 3.

MAIS QUE UMA SIMPLES ATUALIZAÇÃO DO ANTIGO ADO

O ADO .NET é mais do que uma simples atualização do antigo ADO (ActiveX Data Object). Com o advento da plataforma .NET e as várias mudanças que tivemos nos últimos anos na computação mundial ( internet rápida proliferando, surgimento em massa de milhares de novos dispositivos móveis, etc.), precisávamos de outra visão no acesso a banco de dados. Antes de falar do ADO .NET especificamente, deixe-me falar de dois modelos diferentes de acesso a banco de dados, o modelo conectado e o modelo desconectado.

O MODELO CONECTADO AO BANCO DE DADOS

Essa é a maneira mais comum de acessar banco de dados e segue o que normalmente fazemos no nosso dia a dia. A idéia é, todas as vezes que precisamos de alguma informação, nos conectamos a base de dados e carregamos essa informação. Esse modelo nos permite termos sempre a informação o mais atualizada possível e é ideal para sistemas em que os dados mudam o tempo todo e que precisam das informações atualizadas. Um bom exemplo disso é um controle de estoque que precisa saber "on-the-fly" informações que mudam o tempo todo. O quantidade de produtos pode ter mudado inúmeras vezes e você precisa saber a informação mais atualizada. Essa é a idéia! Um problema desse modelo é o fato de que todas as vezes em que é preciso recuperar uma informação é preciso se conectar a base de dados. Isso causa um tráfego maior na rede deixando-a sobrecarregada.

Há aplicações em que as informações não mudam constantemente e pode-se utilizar uma maneira diferente de obtê-las, economizando rede. Essa idéia é descrita no modelo desconectado de acesso a dados.

O MODELO DESCONECTADO AO BANCO DE DADOS

Agora sim! Vamos mudar um pouco a idéia de acesso a banco de dados! Em casos onde o banco não muda constantemente, por que precisamos ter que conectar sempre para pegar apenas uma informação? No modelo desconectado, a idéia é ter uma cópia do banco de dados (ou um subconjunto dele) na memória, evitando ter que utilizar a conexão ao banco de dados em excesso apenas para recuperar uma informação. A idéia então é se conectar uma vez ao banco, recuperar o banco para a memória ou para um arquivo XML e depois ficar usando esse banco de dados na sua aplicação. Caso seja necessária uma modificação, como por exemplo atualizar algum dado, sem problemas! A modificação é feita nesse banco na memória e depois pode-se atualizar o banco de dados com essa novas informações. Essa atualização pode ser feita a qualquer momento. Alguém percebeu algum problema nisso?

O maior problema que ocorre no modelo desconectado é a preocupação com consistência dos dados. Pensem no seguinte: Duas pessoas, no começo do dia, carregam na memória dos seus Pocket PCs um subconjunto igual do banco de dados e saem para trabalhar. Ao final do dia, os dois chegam para atualizar os dados no banco de dados. Se os dois tiverem modificado os mesmos registros mas com dados diferentes... de quem é a preferência? De quem chegou primeiro? Do dados mais novo? Isso depende da política da empresa e deve ser bem pensado em modelos de acesso desse tipo.

PROVIDERS EM ADO .NET

Antes de falar sobre implementação de acesso a banco de dados, é importante também falar sobre o conceito de .NET Data Providers para ADO .NET. Os provedores de dados para .NET são uma camada intermediária para se conectar ao banco de dados . Existem vários providers para .NET e os mais comuns, que já vêm juntamente com o .NET Framework 1.1 são:

  • SQL Server .NET Data Provider:
    Usado para conexão com bancos de dados SQL Server na versão 7.0 ou superior. Para acessa-lo deve-se usar o namespace System.Data.SqlClient no seu código;

  • OLEDB .NET Data Provider:
    Usado para conexão com bancos de dados OLEDB. É usado comumente para acesso a bancos de dados em Access, SQL Server 6.5 ou inferior, etc... Está presente no namespace System.Data.OleDb.

  • ODBC .NET Data Provider:
    Usado para conexão com bancos de dados ODBC. No .NET Framework 1.0 ele deve ser baixado pelo site http://msdn.microsoft.com/downloads , mas no .NET Framework 1.1 ele já vem nativo. Está presente no namespace System.Data.Odbc.

  • Oracle .NET Data Provider:
    Usado para conexão com bancos de dados Oracle. Deve ser baixado pelo site http://msdn.microsoft.com/downloads, e após ser instalado, estará presente no namespace System.Data.OracleClient.

Devido a esses providers, os objetos que usamos em ADO .NET têm, em seus nomes, prefixos que os identificam. Se queremos usar um comando no SQL Server por exemplo, usaremos um SqlCommand. Se tivéssemos usando um comando em OLEDB, usaríamos um OleDbCommand. Falaremos mais de comandos e dos outros objetos nas próximas colunas.

CONECTANDO-SE AO BANCO DE DADOS

É hora de por a mão na massa. É lógico que a primeira coisa a se pensar em uma conexão ao banco de dados é na conexão! Em ADO .NET trabalhamos com um objeto que representa a conexão, e esse objeto depende do banco de dados. Se for o SQL Server 7.0 ou superior, será um objeto SqlConnection. Se for Oracle, um OracleConnection, e assim por diante.

Para criar uma conexão, precisamos de uma string que defina a conexão. A string de conexão muda dependendo do banco, veja dois exemplos:

String de conexão simples para um banco access chamado Dados.mdb:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Dados.mdb"; String de conexão simples para um banco SQL Server que está no servidor Zeus e na Base de dados Teste e que tem login e senha:
"data source=Zeus;initial catalog=Teste;user id=\"admin\";password=\"senhaAdmin\"";

Portanto, se eu quiser criar uma conexão para o meu banco access, faço dessa forma com C#:

  1. Primeiro devo usar o namespace que tem o provider OLEDB:
    using System.Data.OleDb;
  2. No local apropriado do meu código, crio um objeto conexão:
    OleDbConnection conexão = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Dados.mdb");
Lembrem-se que para usar essa conexão, é preciso que ela seja aberta, logo, vamos ter que chamar o método conexao.Open() para utilizarmos os objetos de banco de dados e após isso, fechar a conexão com o método conexao.Close(). Vocês verão isso na prática no próximo artigo!

Pronto pessoal! No segundo artigo vou mostrar como usar ADO .NET para acessar bancos de dados no modelo conectado. Será um artigo mais "hands on", então esperem que muito código vem por aí! Até a próxima!

Marden Menezes

Marden Menezes - Líder do maior grupo de usuários do Brasil, o Sharp Shooters (www.sharpshooters.org.br). Marden é Microsoft Certified Professional e Microsoft Student Ambassador, ministrando palestras e cursos em todo o Brasil e difundindo a plataforma .NET nas universidades.
Como representante do comitê de relacionamento com grupos de usuários da INETA (www.ineta.org), Marden vem trabalhando para a difusão dos grupos de usuários .NET no país.