domingo, 26 de janeiro de 2025

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server

Uma das perguntas mais frequentes que recebo sobre C# é: "Como conectar um aplicativo ao banco de dados e realizar operações básicas?" Essa dúvida é comum porque a integração com bancos de dados é essencial na maioria das aplicações modernas. Então, neste artigo, vou explicar como conectar um aplicativo C# ao SQL Server e realizar operações básicas como inserir, ler, atualizar e excluir dados.


Por Que Usar C# para Trabalhar com Bancos de Dados?

C# oferece suporte robusto para trabalhar com bancos de dados, principalmente com ADO.NET, que é uma biblioteca poderosa para acessar dados. Ele é confiável, rápido e fornece controle total sobre as consultas e transações SQL.


Configurando o Ambiente

Pré-requisitos

  1. Visual Studio: Certifique-se de que o Visual Studio está instalado.
  2. SQL Server: Instale o SQL Server e crie um banco de dados chamado ExemploDB.
  3. Tabela no Banco de Dados: Execute o seguinte comando para criar uma tabela simples:
CREATE TABLE Pessoas (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Nome NVARCHAR(100),
    Idade INT
);

Bibliotecas Necessárias

O System.Data.SqlClient é necessário para conectar-se ao SQL Server. A biblioteca já está inclusa na maioria dos projetos .NET Framework. No .NET Core ou .NET 5+, você pode usar o pacote Microsoft.Data.SqlClient. Instale-o pelo NuGet:

Install-Package Microsoft.Data.SqlClient

Exemplo Prático de Código

Aqui está um exemplo completo de como conectar-se ao banco de dados e realizar as operações CRUD (Create, Read, Update, Delete):

Passo 1: Configuração da String de Conexão

Adicione a string de conexão ao seu código. Ela contém as informações para se conectar ao banco de dados.

string connectionString = "Server=SEU_SERVIDOR;Database=ExemploDB;Trusted_Connection=True;";

Substitua SEU_SERVIDOR pelo nome do servidor onde o SQL Server está instalado.


Passo 2: Inserindo Dados

Adicione uma pessoa ao banco de dados:

using System;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=SEU_SERVIDOR;Database=ExemploDB;Trusted_Connection=True;";
        
        Console.Write("Digite o nome: ");
        string nome = Console.ReadLine();
        
        Console.Write("Digite a idade: ");
        int idade = int.Parse(Console.ReadLine());

        string query = "INSERT INTO Pessoas (Nome, Idade) VALUES (@Nome, @Idade)";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Nome", nome);
            command.Parameters.AddWithValue("@Idade", idade);

            connection.Open();
            int result = command.ExecuteNonQuery();

            Console.WriteLine(result > 0 ? "Registro inserido com sucesso!" : "Falha ao inserir o registro.");
        }
    }
}

Passo 3: Lendo Dados

Recupere e exiba todos os registros:

using System;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=SEU_SERVIDOR;Database=ExemploDB;Trusted_Connection=True;";

        string query = "SELECT * FROM Pessoas";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);

            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            Console.WriteLine("ID\tNome\tIdade");
            while (reader.Read())
            {
                Console.WriteLine($"{reader["Id"]}\t{reader["Nome"]}\t{reader["Idade"]}");
            }
        }
    }
}

Passo 4: Atualizando Dados

Atualize o nome de uma pessoa com base no ID:

using System;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=SEU_SERVIDOR;Database=ExemploDB;Trusted_Connection=True;";

        Console.Write("Digite o ID a ser atualizado: ");
        int id = int.Parse(Console.ReadLine());

        Console.Write("Digite o novo nome: ");
        string novoNome = Console.ReadLine();

        string query = "UPDATE Pessoas SET Nome = @Nome WHERE Id = @Id";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Nome", novoNome);
            command.Parameters.AddWithValue("@Id", id);

            connection.Open();
            int result = command.ExecuteNonQuery();

            Console.WriteLine(result > 0 ? "Registro atualizado com sucesso!" : "Falha ao atualizar o registro.");
        }
    }
}

Passo 5: Excluindo Dados

Remova um registro com base no ID:

using System;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=SEU_SERVIDOR;Database=ExemploDB;Trusted_Connection=True;";

        Console.Write("Digite o ID a ser excluído: ");
        int id = int.Parse(Console.ReadLine());

        string query = "DELETE FROM Pessoas WHERE Id = @Id";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Id", id);

            connection.Open();
            int result = command.ExecuteNonQuery();

            Console.WriteLine(result > 0 ? "Registro excluído com sucesso!" : "Falha ao excluir o registro.");
        }
    }
}

Dicas Importantes

  1. Use parâmetros SQL sempre: Evite injeções SQL utilizando @ para passar valores.
  2. Trate exceções: Sempre envolva operações de banco de dados em blocos try-catch para lidar com erros de forma elegante.
  3. Gerencie conexões: Utilize using para garantir que as conexões sejam fechadas após o uso.
  4. Otimize suas consultas: Certifique-se de que índices estão configurados corretamente no banco para melhorar o desempenho.

Conclusão

Integrar o C# com um banco de dados como o SQL Server é uma habilidade indispensável para desenvolvedores. Com ADO.NET, é possível criar desde aplicações simples até sistemas corporativos robustos. Este guia cobre os fundamentos, mas você pode expandir isso para incluir transações, chamadas assíncronas, ou até usar ORM como Entity Framework para simplificar ainda mais o trabalho.

Se você tiver dúvidas ou sugestões, deixe nos comentários!

Nenhum comentário:

Postar um comentário