ADO .NET - Roteiro básico para iniciantes - I


 Neste artigo vamos recordar como podemos acessar banco de dados relacionais usando a ADO .NET. Veremos um roteiro básico para iniciantes.

Em tempos de .NET Core falar de ADO .NET pode parecer anacrônico, mas se você quiser ter desempenho, pode precisar criar suas próprias consultas otimizadas e usá-las usando os objetos da ADO .NET.

Vamos começar com as conexões que são a primeira coisa a fazer quando desejamos acessar um banco de dados relacional.

As conexões ADO.NET são uma das maneiras mais simples de se conectar a um banco de dados usando a linguagem C#. Elas contam com o uso de um provedor e uma cadeia de conexão, a famosa string de conexão, que aponta para seu banco de dados para executar consultas.

A biblioteca ADO.NET fornece diferentes tipos de provedores de dados para trabalhar com diferentes fontes de dados. Os três provedores de dados mais comuns são OLE DB, SQL e ODBC. Esses provedores são necessários pois oferecem um acesso mais rápido para cada tipo de banco de dados.

A seguir os provedores de dados padrão disponíveis e suas classes usadas para acessar o banco de dados:

Provedor Classes
System.Data.SqlClient SqlConnection, SqlCommand, SqlDataReader
System.Data.OleDb OleDbConnection, OleDbCommand, OleDbDataReader
MySql.Data MySqlConnection, MySqlCommand, MySqlDataReader

Todos estas classes são comumente usadas para acessar dados através da linguagem C# e serão encontrados ao durante a construção de aplicativos centrados em dados.

Além disso temos também provedores fornecidos por terceiros como o .NET Connector to MySql.

A figura baixo mostra um resumo da arquitetura ADO .NET :

1- ) Usando um DataSet

Este modo é conhecido como modo desconectado.

O objeto DataSet veio para substituir com vantagens o objeto recordset (ADO) e, guarda poucas similaridades com o objeto recordset. Enquanto o objeto recordset representa uma coleção de tabelas de dados O objeto DataSet representa uma cópia do banco de dados em memória.

2- Usando um DataReader

Os objetos DataReader é uma das maneiras mais fáceis para ler os dados retornados pelos objetos Command. Eles permitem acessar e percorrer os registros no modo de somente leitura e somente para frente - forward-only.

Padrão de acesso comum para conexões ADO .NET

Existe um padrão comum que pode ser usado ao acessar seus dados através de uma conexão ADO.NET baseado no seguinte roteiro básico:

  1. Com ADO .NET você primeiro cria um objeto Connection e fornece ao mesmo informação sobre a string de conexão.
  2. A seguir você criar um objeto Command e fornece a ele detalhes da instrução SQL que deverá ser executada. Esta informações pode usar parâmetros.
  3. Se o objeto Command retornar um conjunto de registros e você decidir usá-lo deverá criar um objeto DataAdapter e preencher um objeto DataSet ou DataTable.

A seguir temos um template de código que você pode usar para acessar e consultar dados usando um ExecuteReader:

using(var connection = new SqlConnection("sua-string-de-conexão")
{
    // monte a sua consulta SQL
    var query = "SELECT * FROM SuaTabela WHERE campo1 = @campo1");
    // Prepare o seu command para executar
    using(var command = new SqlCommand(query, connection))
    {
           // Abra a conexão
           connection.Open();
           // Adicione os parâmetros se houver
           // Execute a consulta como um reader
           using(var reader = command.ExecuteReader())
           {
               // Itere através dos resultado e por retornar um DataTable ou DataSet
           }
    }
}

No código estamos usando o bloco using que libera automaticamente os recursos usados apos sua utilização.

No entanto se você estiver realizando uma atualização de dados, e não apenas uma consulta, pode usar o template de código a seguir que um ExecuteNonQuery.

using(var connection = new SqlConnection("sua-string-de-conexão"))
{
      var query = "UPDATE SuaTabela SET Propriedade = Value WHERE Campo = @Campo";

      using(var command = new SqlCommand(query,connection))
      {
           connection.Open();
           // Adicione os parâmetros se houver
           // Execute a atualização: INSERT,  UPDATE ou DELETE
           command.ExecuteNonQuery();
       }
}

Resumindo temos que:

Método  Descrição
ExecuteReader Executa a consulta e retorna um objeto SqlDataReade. Usado para SELECT;
ExecuteNonQuery Executa a consulta e não retorna nenhuma coleção. Usado para instruções INSERT,  DELETE e UPDATE onde retorna o número de registros afetados.

Apresentando as interfaces dos provedores

Você pode até programar contra um conjunto de interfaces comuns e não precisa se preocupar classes específicas do provedor. As interfaces centrais fornecidas pelo ADO.NET são:

IDbConnection - para gerenciar conexões de banco de dados
IDbCommand - para executar comandos SQL
IDbTransaction - para gerenciar transações
IDataReader - para ler dados retornados por um comando
IDataAdapter - para canalizar dados para e de conjuntos de dados

A principal razão de usar diferentes provedores de dados é manter o desempenho e não perder a funcionalidade do provedor de dados nativos. Por exemplo, quando você acessa um banco de dados do Access usando o provedor de dados OLE DB, ele usa provedor OLE DB nativo para acessar o banco de dados, mas quando você usa o provedor de dados ODBC para acessar um banco de dados do Access, ele usa a camada ODBC na camada nativa.

Em resumo, todas as classes do provedor de dados, como Connection, Command, DataAdapter e DataReader, são herdadas das interfaces, e essas interfaces
nos permitem construir uma arquitetura abstrata na nossa aplicação, visto que podemos fazer uso das interfaces como referência em nossos projetos.

E focando nas interfaces o objetivo deste artigo é mostrar como você pode escrever uma classe genérica, que pode acessar os dados usando os provedores de dados OLE DB, SQL e ODBC com base na seleção do usuário no tempo de execução.

Para saber como usar as interfaces veja este artigo: ADO .NET - usando as interfaces

E estamos conversados...

"Não quero, porém, irmãos, que sejais ignorantes acerca dos que já dormem, para que não vos entristeçais, como os demais, que não têm esperança.
Porque, se cremos que Jesus morreu e ressuscitou, assim também aos que em Jesus dormem, Deus os tornará a trazer com ele."

1 Tessalonicenses 4:13,14

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti