Acesso à Banco de Dados III Usando Parâmetros
Agora que já sabemos como executar comando no banco de dados, vamos aprender à executá-los usando parâmetros.
Os parâmetros são como variáveis que contém valores que são enviados e retornados do banco de dados, eles têm tipo e um conteúdo assim como as variáveis que usamos nos nossos programas.
Para definirmos o tipo do parâmetro usamos o enum SqlDbType que têm os tipos usados no SQL Server(para o Oracle temos o OracleType). Tudo isso será melhor abordado adiante, faremos um exemplo prático.
Geralmente usamos parâmetros quando queremos mudar algo rapidamente e especificamente, na maioria das vezes na cláusula WHERE. Outra vantagem é a segurança proporcionada, pois ao deixar de fazer concatenação de strings para formar uma Query SQL eliminamos o risco de um SQL Injection. A seguir um exemplo de uma Query usando parâmetro:
SELECT nome, idade, cidade FROM Clientes WHERE cd_cliente= @Codigos
Os parâmetros podem ser de entrada, saída ou entrada e saída, definido na propriedade Direction. Por padrão o parâmetro é definido como de entrada.
Para criarmos um parâmetro declaramos uma instância da classe Parameter, e atribuímos o seu nome e tipo de dado, que deve coincidir com o esperado pela fonte de dados, exemplo:
SqlParameter MeuParametro = new SqlParameter();
MeuParametro.ParameterName = "@Codigo";
MeuParametro.SqlDbType = SqlDbType.Int;
//Exemplo definindo como parâmetro de saída
MeuParametro.Direction.ParameterDirection.Output;
Depois que temos nosso parâmetro, vamos adicionar ele ao objeto Command. Os objetos Command tem uma propriedade chamada Parameters, que representa uma coleção de parâmetros. Então usamos o método Add:
MeuComando.Parameters.Add(MeuParametro);
Falta apenas, é claro, definirmos o valor do nosso parâmetro(caso seja de entrada ou de entrada e saída):
MeuParametro.Value = 50;
A partir daí não muda mais nada, podemos executar o nosso comando como fizemos anteriormente:
SqlDataReader reader = MeuComando.ExecuteReader();