Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Dichiarazioni preparate in C# - Query con segno @ (at/segno di strudel).

In effetti, ODBC ha la sua parte di problemi con il supporto dei parametri denominati. Tuttavia, è possibile un certo utilizzo dei parametri denominati.

Ad esempio, nel tuo caso funziona la seguente sintassi:

OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;

La situazione più complicata è quando non hai una corrispondenza univoca per il parametro come USER_ID =?; ad esempio, quando desideri utilizzare IN operatore in WHERE clausola.

Quindi la seguente sintassi farebbe il lavoro:

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;

Si prega di notare l'utilizzo di ? (punto interrogativo) invece di @ (segno di chiocciola) all'interno del nome del parametro. Anche se si noti che la sostituzione dei valori dei parametri in questo caso non ha nulla a che fare con i loro nomi, ma solo con il loro ordine con la raccolta di parametri.

Spero che questo aiuti :-)