Thật vậy, ODBC cũng có chung một số vấn đề với việc hỗ trợ các tham số được đặt tên. Tuy nhiên, có thể sử dụng một số tham số được đặt tên.
Ví dụ:trong trường hợp của bạn, cú pháp sau hoạt động:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
Tình huống phức tạp hơn là khi bạn không có kết quả khớp duy nhất cho tham số như USER_ID =?; ví dụ:khi bạn muốn sử dụng IN toán tử trong WHERE mệnh đề.
Sau đó, cú pháp sau sẽ thực hiện công việc:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID IN (?, ?)";
cmd.Parameters.Add("?ID1", OdbcType.VarChar, 250).Value = email1;
cmd.Parameters.Add("?ID2", OdbcType.VarChar, 250).Value = email2;
Vui lòng lưu ý việc sử dụng ? (dấu chấm hỏi) thay vì @ (tại dấu) trong tên tham số. Mặc dù lưu ý rằng việc thay thế các giá trị của tham số trong trường hợp này không liên quan gì đến tên của chúng mà chỉ liên quan đến thứ tự của chúng với bộ sưu tập tham số.
Tôi hy vọng điều này sẽ giúp :-)