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:
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
C# - Aplicando os conceitos da POO na prática - Macoratti.net
C# - Aplicando conceitos OOP e Polimorfismo na prática - Macoratti.net