No desenvolvimento de aplicações, uma das necessidades mais comuns é conectar-se a um banco de dados ADO em C# para armazenar, recuperar e manipular dados. O ADO.NET é a principal tecnologia utilizada para essa comunicação em aplicações .NET, oferecendo uma maneira eficiente de interagir com vários tipos de bancos de dados, como SQL Server, MySQL, PostgreSQL, e muitos outros. Neste post, vamos entender o que é ADO.NET, como utilizá-lo em uma aplicação C#, e ver exemplos práticos de SELECT, INSERT, UPDATE, e DELETE.
O que é ADO.NET?
ADO.NET (ActiveX Data Objects for .NET) é uma biblioteca de classes do .NET que permite a comunicação entre uma aplicação C# e um banco de dados. Ele fornece um conjunto de classes que você pode usar para executar operações de leitura, escrita e manipulação de dados em várias fontes de dados, como bancos de dados relacionais e XML.
ADO.NET é eficiente porque trabalha em modo desconectado, ou seja, ele permite que você recupere dados, desconecte-se do banco e trabalhe offline com eles, reduzindo o número de conexões ativas no banco.
Componentes principais do ADO.NET
Antes de começar a programar, é importante conhecer os principais componentes da ADO.NET:
- Connection: Estabelece a conexão com o banco de dados;
- Command: Executa comandos SQL (SELECT, INSERT, UPDATE, DELETE);
- DataReader: Lê os dados de forma rápida e eficiente (apenas leitura e forward-only);
- DataAdapter: Preenche um
DataSet
com dados do banco e pode sincronizar alterações; - DataSet: Um conjunto de dados em memória que pode conter tabelas, relacionamentos, etc.
Exemplo básico de conexão com SQL Server
Veja o exemplo básico de como conectar-se a um banco de dados SQL Server e executar uma consulta SELECT.
Passo 1: Referenciar a Biblioteca ADO.NET
Certifique-se de que você tenha as seguintes referências no seu projeto:
using System.Data;
using System.Data.SqlClient;
Passo 2: Estabelecendo uma conexão
O primeiro passo é criar uma string de conexão que contenha informações como o nome do servidor, o banco de dados, o usuário e a senha:
string connectionString = "Data Source=SERVIDOR;Initial Catalog=NomeDoBanco;User ID=usuario;Password=senha";
Passo 3: Realizando uma consulta SQL (SELECT)
Veja um exemplo completo de um programa que conecta ao banco de dados, faz uma consulta e exibe os dados no console:
using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "Data Source=SERVIDOR;Initial Catalog=NomeDoBanco;User ID=usuario;Password=senha";
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open(); // Abre a conexão com o banco de dados
string query = "SELECT Nome, Sobrenome FROM Pessoas";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read()) // Enquanto houver registros
{
Console.WriteLine($"{reader["Nome"]} {reader["Sobrenome"]}");
}
}
}
}
}
Explicação:
SqlConnection
: Estabelece uma conexão com o banco de dados.SqlCommand
: Armazena e executa a consulta SQL.SqlDataReader
: Lê os dados retornados pela consulta linha por linha.
Inserindo dados no banco (INSERT)
Agora que você sabe como fazer um SELECT, vamos ver como inserir novos dados no banco:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
string insertQuery = "INSERT INTO Pessoas (Nome, Sobrenome, Idade) VALUES (@nome, @sobrenome, @idade)";
using (SqlCommand cmd = new SqlCommand(insertQuery, conn))
{
cmd.Parameters.AddWithValue("@nome", "João");
cmd.Parameters.AddWithValue("@sobrenome", "Silva");
cmd.Parameters.AddWithValue("@idade", 30);
int rowsAffected = cmd.ExecuteNonQuery(); // Executa a query
Console.WriteLine($"{rowsAffected} linha(s) inserida(s)");
}
}
Aqui utilizamos parâmetros (@nome
, @sobrenome
, etc.) para evitar SQL Injection e para tornar o código mais seguro.
Atualizando dados no banco (UPDATE)
Para atualizar registros existentes no banco, usamos a operação UPDATE. Veja como:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
string updateQuery = "UPDATE Pessoas SET Idade = @idade WHERE Nome = @nome AND Sobrenome = @sobrenome";
using (SqlCommand cmd = new SqlCommand(updateQuery, conn))
{
cmd.Parameters.AddWithValue("@idade", 35);
cmd.Parameters.AddWithValue("@nome", "João");
cmd.Parameters.AddWithValue("@sobrenome", "Silva");
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} linha(s) atualizada(s)");
}
}
Excluindo dados (DELETE)
A exclusão de registros no banco é feita através do comando DELETE:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
string deleteQuery = "DELETE FROM Pessoas WHERE Nome = @nome AND Sobrenome = @sobrenome";
using (SqlCommand cmd = new SqlCommand(deleteQuery, conn))
{
cmd.Parameters.AddWithValue("@nome", "João");
cmd.Parameters.AddWithValue("@sobrenome", "Silva");
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} linha(s) excluída(s)");
}
}
Usando DataSet e DataAdapter
Se você precisa trabalhar com grandes volumes de dados e deseja manipular esses dados de forma desconectada (offline), pode usar o DataSet e o SqlDataAdapter para preencher o conjunto de dados em memória:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
string selectQuery = "SELECT * FROM Pessoas";
SqlDataAdapter adapter = new SqlDataAdapter(selectQuery, conn);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, "Pessoas");
foreach (DataRow row in dataSet.Tables["Pessoas"].Rows)
{
Console.WriteLine($"{row["Nome"]} {row["Sobrenome"]}");
}
}
Boas práticas ao trabalhar com ADO.NET
- Use
using
para fechar conexões: Sempre use blocosusing
para garantir que as conexões sejam fechadas corretamente, evitando vazamentos de recursos; - Parâmetros no SQL: Nunca concatene strings diretamente nas consultas SQL. Use parâmetros para evitar ataques de SQL Injection e garantir maior segurança;
- Manter a conexão aberta apenas quando necessário: Conexões de banco de dados são recursos valiosos. Evite manter a conexão aberta por muito tempo. Abra, execute as operações necessárias e feche-a rapidamente;
- Validação de dados: Certifique-se de validar os dados que entram no banco para evitar a inserção de informações inválidas ou maliciosas.
ADO.NET é uma poderosa ferramenta para acessar e manipular bancos de dados em aplicações C#. Com o uso de SqlConnection, SqlCommand, e outras classes, você pode facilmente realizar operações como SELECT, INSERT, UPDATE e DELETE. Além disso, você pode usar o DataSet e o DataAdapter para trabalhar com dados desconectados. Ao seguir as boas práticas, você pode garantir a eficiência e segurança ao lidar com bancos de dados em suas aplicações.
CONHEÇA O CURSO COMPLETO DE C# COM + DE 100 AULAS PRÁTICAS. Tenha acesso vitalício e certificado de conclusão.
CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários