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

  1. Use using para fechar conexões: Sempre use blocos using para garantir que as conexões sejam fechadas corretamente, evitando vazamentos de recursos;

  2. 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;

  3. 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;

  4. 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.

Aprenda do zero ou aprimore seus conhecimentos em C#. Domine os conceitos de Orientação a Objetos e crie sistemas complexos integrados com banco de dados.

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:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
 https://youtube.com/criandobits

Tags: |

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *