Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

a consulta selecionada não funciona com parâmetros usando Parameters.AddWithValue


Presumo que seu código não seja muito como apresentado, dado que não seria compilado no momento - você está usando cmdR antes de declará-lo.

Primeiro, você está tentando usar parâmetros nomeados e de acordo com a documentação de OdbcCommand.Parameters , que não é compatível:

Além disso, eu pessoalmente evitaria usar AddWithValue de qualquer maneira - eu usaria algo como:
string sql = "select * from user_tbl where emp_id = ? and birthdate = ?";
using (var connection = new OdbcConnection(...))
{
    connection.Open();
    using (var command = new OdbcCommand(sql, connection))
    {
        command.Parameters.Add("@emp_id", OdbcType.Int).Value = userValidate.EmployeeId;
        command.Parameters.Add("@birthdate", OdbcType.Date).Value = userValidate.BirthDate;
        using (var reader = command.ExecuteReader())
        {
            // Use the reader here
        }
    }
}

Este exemplo usa nomes que seguem as convenções de nomenclatura .NET e demonstra o descarte adequado de recursos... bem como a correção do problema de parâmetro.

Eu acho que é um pouco lamentável que você tenha que fornecer um nome para o parâmetro ao adicioná-lo ao comando, mesmo que você não possa usá-lo na consulta, mas essa é a vida.