Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Instructions préparées C# - requêtes de signe @ (arobase / signe strudel)

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 :-)