Zakładam, że Twój kod w rzeczywistości nie jest dostatecznie jak przedstawiono, biorąc pod uwagę, że obecnie się nie kompiluje - używasz cmdR
zanim to zadeklarujesz.
Najpierw próbujesz użyć nazwanych parametrów i zgodnie z dokumentacją OdbcCommand.Parameters
, który nie jest obsługiwany:
Dodatkowo osobiście unikałbym używania AddWithValue
w każdym razie - użyłbym czegoś takiego:
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
}
}
}
Ten przykład używa nazw zgodnych z konwencjami nazewnictwa .NET i demonstruje prawidłowe usuwanie zasobów... a także naprawianie problemu z parametrami.
Myślę, że to trochę niefortunne, że musisz podać nazwę parametru podczas dodawania go do polecenia, nawet jeśli nie możesz go użyć w zapytaniu, ale takie jest życie.