Asumiré que su código en realidad no es bastante tal como se presenta, dado que actualmente no se compilaría; está usando cmdR
antes de declararlo.
Primero, intenta usar parámetros con nombre, y de acuerdo con la documentación de OdbcCommand.Parameters
, eso no es compatible:
Además, personalmente evitaría usar AddWithValue
de todos modos, usaría 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 ejemplo utiliza nombres que siguen las convenciones de nomenclatura de .NET y demuestra cómo desechar correctamente los recursos... además de solucionar el problema de los parámetros.
Creo que es un poco desafortunado que tenga que proporcionar un nombre para el parámetro al agregarlo al comando aunque no pueda usarlo en la consulta, pero así es la vida.