Coletando ids do banco de dados (.NET x SQL SERVER)
Criando um método que facilite o manejo das chaves do banco dentro do Visual Studio
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.