Lo script è un po' datato  (ci sono finito per caso)... A distanza di tempo (un paio d'anni) suggerisco una via alternativa che compatta il codice e risparmia l'uso di una funzione helper:

SqlParameter p1 = new SqlParameter("@text", SqlDbType.VarChar, 250);
p1.Value = s1 ?? DBNull.Value;


Per chi non conoscesse l'operatore "??" (coalescente), il codice sopra equivale a:

SqlParameter p1 = new SqlParameter("@text", SqlDbType.VarChar, 250);
p1.Value = (s1 == null) ? DBNull.Value : s1;


Ovvero (esplicitando l'operatore ternario con if...else...):

SqlParameter p1 = new SqlParameter("@text", SqlDbType.VarChar, 250);
if (s1 == null)
 p1.Value = DBNull.Value;
else
 p1.Value = s1;


L'unica differenza rispetto allo script iniziale è che string.Empty (che è diverso da una null reference!) viene scritto nel database come '' anziché come NULL.
IMHO questo comportamento è preferibile ma se si desiderasse trattare una stringa vuota come valore null è possibile usare questa sintassi, cmq piuttosto compatta:

SqlParameter p1 = new SqlParameter("@text", SqlDbType.VarChar, 250);
p1.Value = string.IsNullOrEmpty(s1) ? DBNull.Value : s1;


HTH

Matteo Casati
GURU4.net
m.casati wrote:
Lo script è un po' datato  (ci sono finito per caso)... A distanza di tempo (un paio d'anni) suggerisco una via alternativa che compatta il codice e risparmia l'uso di una funzione helper:

sì, alla luce di C# 2.0 ha decisamente senso quanto hai scritto

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.