Usare parametri nullable nelle query parametriche di ADO.NET

di Daniele Bochicchio, in ASP.NET, ADO.NET, C#,

Quando si lavora con query parametriche o stored procedure (ed andrebbe sempre fatto, dato che rende nulli i rischi derivanti da attacchi di SQL injection) spesso si ha la necessità di specificare come valore di un parametro NULL, assegnando alla proprietà Value il valore dato da DBNull.Value.
Sebbene sia possibile attraverso una semplice condizione, è certamente più pratico creare una funzione di aiuto come la seguente:

public static IDataParameter CheckNull(IDataParameter param, string value)
{
  if (value == null || value == String.Empty)
    param.Value = DBNull.Value;
  else
    param.Value = value;

  return param;
}

Ed ecco come usare la nostra funzione:

// uso una stringa vuota
string s1 = String.Empty;

// definisco il parametro e passo il valore alla funzione
SqlParameter p1 = new SqlParameter("@text", SqlDbType.VarChar, 250);
p1.Value = CheckNull(p1, s1);

La funzione helper, che andrà salvata in una classe helper, funziona indistintamente con qualsiasi tipo di parametro, dato che utilizza l'interfaccia IDataParameter che ogni managed provider implementa nel Parameter definito localmente.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi