Предполагам, че вашият код всъщност не е съвсем както е представено, като се има предвид, че в момента няма да се компилира - използвате cmdR
преди да го декларирате.
Първо, вие се опитвате да използвате именувани параметри и според документацията на OdbcCommand.Parameters
, което не се поддържа:
Освен това аз лично бих избягвал използването на AddWithValue
както и да е - бих използвал нещо като:
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
}
}
}
Този пример използва имена, следващи конвенциите за именуване на .NET, и демонстрира правилното разполагане с ресурси... както и коригиране на проблема с параметъра.
Мисля, че е малко жалко, че трябва да предоставите име за параметъра, когато го добавяте към командата, въпреки че не можете да го използвате в заявката, но такъв е животът.