Jeg går ud fra, at din kode faktisk ikke er helt som præsenteret, givet at det i øjeblikket ikke ville kompilere - du bruger cmdR
før du erklærer det.
For det første forsøger du at bruge navngivne parametre, og ifølge dokumentationen fra OdbcCommand.Parameters
, som ikke understøttes:
Derudover ville jeg personligt undgå at bruge AddWithValue
alligevel - jeg ville bruge noget som:
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
}
}
}
Dette eksempel bruger navne, der følger .NET-navnekonventioner, og demonstrerer korrekt bortskaffelse af ressourcer... samt løsning af parameterproblemet.
Jeg synes, det er lidt uheldigt, at du skal angive et navn til parameteren, når du tilføjer den til kommandoen, selvom du ikke kan bruge den i forespørgslen, men sådan er livet.