Usare parametri nullable nelle query parametriche di ADO.NET
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.







