En effet, ODBC a sa part de problèmes avec la prise en charge des paramètres nommés. Cependant, certaines utilisations des paramètres nommés sont possibles.
Par exemple, dans votre cas, la syntaxe suivante fonctionne :
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
Une situation plus délicate est lorsque vous n'avez pas de correspondance unique pour le paramètre comme USER_ID =?; par exemple, lorsque vous souhaitez utiliser le IN opérateur dans WHERE clause.
Alors la syntaxe suivante ferait l'affaire :
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;
Veuillez noter l'utilisation de ? (point d'interrogation) au lieu de @ (arobase) dans le nom du paramètre. Bien que notez que la substitution des valeurs des paramètres dans ce cas n'a rien à voir avec leurs noms, mais uniquement avec leur ordre avec la collection de paramètres.
J'espère que cela vous aidera :-)