Coletando ids do banco de dados (.NET x SQL SERVER)

Ricardo RibeiroRicardo Ribeiro
2 min read

Trabalhando com edição de dados no banco utilizando o .NET, encontrei a dificuldade de puxar as keys do banco de dados para o código no Visual Studio. A primeira solução que pensei para isso foi criar uma textBox que serviria como um placeholder que armazenaria a primary key. Porém, eu teria que criar uma textBox para todos os dados que precisassem da key, julguei que fosse no mínimo antiprático. Nesse dia, fui dormir e acordei na manhã seguinte com um algoritmo na cabeça.

public static string getId(string tabela, string coluna, string referencia)
{
    string query = $"SELECT id FROM [{tabela}] WHERE [{coluna}] = @referencia";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        try
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@referencia", referencia);
            SqlDataReader reader = cmd.ExecuteReader();
            if(reader.Read())
            {
                string id = reader["id"].ToString();
                int idInt = Int32.Parse(id);
                return id;

            }
            else
            {
                return "Não foi possivel coletar o id.";
            }

        }

        catch (Exception ex)
        {
            return "Error:" + ex.Message;

        }
    }
}

O macete aqui é ter uma classe que funciona como um DatabaseManager. Dessa forma, você vai poder chamar o método dentro de outras classes no seu projeto. O método é público e estático e retorna uma string (a key). Ele recebe a table, a column, uma referência e faz uma query.

Segue abaixo um exemplo da utilização.

string fornecedor = comboBoxFornecedor.SelectedItem.ToString();
string idFornecedor = DatabaseManager.getId("Fornecedores", "nomeFantasia", fornecedor);

Na primeira linha, coletamos a referência que está sendo mostrada na GUI. Diferente da primeira ideia, em que precisávamos ter uma textBox com o id, agora podemos usar qualquer valor da tabela como referência. Nesse caso, estamos usando o dado de uma comboBox que contém o texto referente à column "nomeFantasia" na tabela "Fornecedores". Já na segunda linha, definimos o id daquela row utilizando o método getId presente na classe DatabaseManager.

Conclusão

Esse método é útil para auxiliar em operações em que você precisa consultar um id no banco de dados, principalmente para interagir com foreign keys. Um exemplo desse tipo de operação seria editar dados no banco. Tenho meu produto cadastrado, um dos dados dele é o fornecedor. Esse fornecedor é uma foreign key que indica uma tabela específica de fornecedores com seus dados detalhados. Para alterar esse fornecedor, eu preciso saber qual é a key que o referencia, levando em conta que, se eu quiser alterar esse fornecedor, preciso alterar a key e não o nome dele.

0
Subscribe to my newsletter

Read articles from Ricardo Ribeiro directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ricardo Ribeiro
Ricardo Ribeiro

Estudante de Sistemas de Informação na UEMG. Compartilhando um pouco das minhas duvidas e o que eu descobri sobre elas.