1
resposta

[Sugestão] Minha solução criando métodos atualizar e deletar

ArtistaDAL.cs >>>

using Microsoft.Data.SqlClient;
using ScreenSound.Modelos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ScreenSound.Banco;

internal class ArtistaDAL
{
    public IEnumerable<Artista> Listar()
    {
        var lista = new List<Artista>();
        using var connection = new Connection().ObterConexao(); //conecta com o banco de dados
        connection.Open();//abre a conexão

        string sql = "SELECT * FROM Artistas"; //script do bacndo de dados para selecionar artistas
        SqlCommand command = new SqlCommand(sql, connection); //recebe a conexão e o script
        using SqlDataReader dataReader = command.ExecuteReader(); //executa o comando

        while (dataReader.Read()) //leitura das informações, criando os campos que queremos ler
        {
            string nomeArtista = Convert.ToString(dataReader["Nome"]);
            string bioArtista = Convert.ToString(dataReader["Bio"]);
            int idArtista = Convert.ToInt32(dataReader["Id"]);

            Artista artista = new(nomeArtista, bioArtista) { Id = idArtista };
            lista.Add(artista);//quantos artistas tiverem na tabela vai ser lido e adicionado na tabela
        }
        return lista;
    }

    public void Adicionar(Artista artista)
    {
        using var connection = new Connection().ObterConexao();
        connection.Open();
       
        string sql = "INSERT INTO Artistas (Nome, FotoPerfil, Bio) " +
            "VALUES (@nome, @perfilPadrao, @bio)";
        SqlCommand command = new SqlCommand(sql, connection);

        //mapeando quais informações vai para cada parte da tabela
        command.Parameters.AddWithValue("@nome", artista.Nome);
        command.Parameters.AddWithValue("@perfilPadrao", artista.FotoPerfil);
        command.Parameters.AddWithValue("@bio", artista.Bio);

        int retorno = command.ExecuteNonQuery(); //quantidade de linhas afetados
        Console.WriteLine($"Linhas afetadas: {retorno}");
    }

    public void Atualizar(Artista artista)
    {
        using var connection = new Connection().ObterConexao();
        connection.Open();

        string sql = $"UPDATE Artistas SET Nome = @nome, Bio = @bio WHERE Id = @id";
        SqlCommand command = new SqlCommand(sql, connection);

        //mapeando
        command.Parameters.AddWithValue("@nome", artista.Nome);
        command.Parameters.AddWithValue("@bio", artista.Bio);
        command.Parameters.AddWithValue("@id", artista.Id);
        
        int retorno = command.ExecuteNonQuery(); //quantidade de linhas afetados
        Console.WriteLine($"Linhas afetadas: {retorno}");
    }

    public void Deletar(int id)
    {
        using var connection = new Connection().ObterConexao();
        connection.Open();

        string sql = $"DELETE FROM Artistas WHERE Id = @id";
        SqlCommand command = new SqlCommand(sql, connection);

        command.Parameters.AddWithValue("@id", id);

        int retorno = command.ExecuteNonQuery(); //quantidade de linhas afetados
        Console.WriteLine($"Linhas afetadas: {retorno}");
    }
}

    
    
    
Program.cs
    
    using ScreenSound.Menus;
using ScreenSound.Modelos;
using ScreenSound.Banco;

try
{
    var artistaDAL = new ArtistaDAL();
    artistaDAL.Adicionar(new Artista("Miltom Nascimento", "vulgo bituca, cruzeirense de coracao e referencia nacional em tudo que faz"));

    var listaArtistas = artistaDAL.Listar();
    
    foreach (var artista in listaArtistas)
    {
        Console.WriteLine(artista);
    }

    // Atualizar um artista existente
    var artistaParaAtualizar = new Artista("Ana frango eletrico", "hmmmm frango");
    artistaParaAtualizar.Id = 2018; // Altera o artista que deseja atualizar pelo ID 
    artistaDAL.Atualizar(artistaParaAtualizar);

    // Listar novamente todos os artistas após a atualização
    var listaArtistasAtualizada = artistaDAL.Listar();
    foreach (var artista in listaArtistasAtualizada)
    {
        Console.WriteLine(artista);
    }

    //Deletar artista 
    int idArtistaParaDeletar = 2019;
    artistaDAL.Deletar(idArtistaParaDeletar);


    // Listar novamente todos os artistas após deletar
    var listaArtistasDelet = artistaDAL.Listar();
    foreach (var artista in listaArtistasDelet)
    {
        Console.WriteLine(artista);
    }
}

catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
return;
1 resposta

Oi, Rafael! Tudo bem?

Excelente código, parabéns pelo projeto e obrigada por tê-lo compartilhado com a nossa comunidade! Espero que esteja gostando do curso! Colocar em execução as atividades propostas pelo professor em aula é uma prática muito importante para internalizarmos o conteúdo. Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!