ADO.Net e seus principais Objetos.

Neste artigo vou falar um pouco sobre o ADO.Net e seus principais Objetos, com o objetivo de oferecer uma visão conceitual dos recursos mais comuns deste mecanismo.

O ADO.Net é um mecanismo de acesso a dados que contem todos os recursos necessários para acesso e manipulação de dados. Para ser utilizado em uma aplicação precisamos usar a NameSpace System.Data onde encontramos todas as classes para trabalhar com o ADO.Net.

Para dar suporte ao banco de dados escolhido é necessário importar a NameSpace correspondente ao banco de dados que você for trabalhar, as opções são:

  • System.Data.SqlClient: Para bancos SQL Server a partir da versão 7
  • System.Data.OleDb: Bancos Access e SQL Server anteriores a versão 7
  • System.Data.OracleClient: Bancos de Dados Oracle
  • System.Data.ODBC: Bancos de dados padrões
Caso você precise acessar outro banco de dados, acesse o site do fabricante do mesmo para maiores informações.

O acesso a dados com o ADO.Net pode ser de duas formas, conectado ao banco de dados (DataReader) ou desconectado (DataSet – Mantem uma cópia do banco de dados em memória).

Principais objetos do ADO.Net

Objeto Connection

É responsável pela conexão com o banco de dados. Para estabelecer uma conexão precisamos de uma string de conexão (ConnectionString). Para criar o objeto de conexão com banco de dados SQL Server, segue sintaxe abaixo:

sqlConnection cn = new sqlConnection();

Se precisar se conectar ao Access:

oleDbConnection cn = new oleDbConnection();

A String de conexão pode ser passada na declaração do objeto de conexão desta forma:

oleDbConnection cn = new oleDbConnection(strCn);

Onde strCn contem informações como: Caminho e nome do banco de dados, Usuário e Senha para acesso, tipo de autenticação..., veja descrição das informações que serão utilizadas na String de conexão de exemplo:

  • Data Source: Nome ou Endereço IP da máquina onde o Banco de dados será executado.
  • Initial Catalog: Endereço/Nome do banco de dados.
  • Integrated Security: Define o tipo de autenticação. Para usar a autenticação do Windows, seu valor deve ser definido como “True” ou “SSPI”, se seu valor for false, devemos informar Usuário (User ID) e senha (Password) para a conexão.

As informações são separadas por ; (Ponto e Vírgula), veja a String de Conexão exemplo:


// Declarando a String de Conexão
String strCn;

// Passando as informações para a conexão
strCn = @"Data Source=;Initial Catalog=C:\PauloKaupa\NomeDoBanco.mdf;Integrated Security = True";

Objeto Command - Executando Comandos SQL

Usado para executar comandos SQL, os métodos para executar estes comandos são: ExecuteReader, ExecuteNonQuery , ExecuteScalar

  • Command.ExecuteReader: Executa comandos SQL que retornam dados, ex: SELECT
  • Command.ExecuteNonQuery: Comandos SQL que não retornam dados, ex: DELETE.
  • Command.ExecuteScalar: Retorna um único valor, ex: COUNT, MAX.

Objetos DataSet e DataTable

  • DataSet: Representa os dados do Banco de Dados, é uma cópia das tabelas e seus relacionamentos.
  • DataAdapter: É um conjunto de objetos para efetuar a comunicação entre o DataSet e a Fonte de Dados.

Vamos entender seu funcionamento:

O DataAdapter possui o método Fill que copia os dados da fonte de dados para o DataSet, permitindo desta forma o trabalho desconectado do banco de dados, quando efetuamos alterações nesta “Cópia” do Banco o método Update deste objeto (DataAdapter) efetua as atualizações na fonte de dados original.

  • DataTable: Representa uma tabela, contida em um DataSet.
  • DataView: É uma visão das tabelas contidas no DataTable.

Para finalizar este artigo vou mostrar o recurso de Pooling (Connection Pooling), que está diretamente associado à conexão com banco de dados.

Funcionamento do Pooling: Quando abrimos uma conexão com um banco e a fechamos, ela fica disponível no Pool de conexões, assim quando abrirmos outra, este recurso verifica se existe alguma conexão armazenada com as mesmas características no Pooling, se for encontrada uma conexão igual está será ativada e somente será aberta uma nova se esta for diferente das já utilizadas. Ganhamos desta forma um aumento de performance e reaproveitamento de código.

Para habilitar ou desabilitar o Pooling, basta acrescentar o parâmetro Pooling=False na String de Conexão, se este parâmetro for omitido, será atribuído True, que é o valor Default desta propriedade.

Confira também