#736 - Usare parametri nullable nelle query parametriche di ADO.NET
m.casati non è online. Ultima attività: 18/07/2008 17.20.55m.casati
Inserito il: 30 novembre 2007 12.37
contributi / Top Poster / Community manager / www.guru4.net / Blog / 2222 messaggi dal 13 giu 2001 Istalla Microsoft Silverlight!
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
Microsoft Most Valuable Professional
Re: #736 - Usare parametri nullable nelle query parametriche di ADO.NET
Daniele Bochicchio non è online. Ultima attività: 18/07/2008 17.51.59Daniele Bochicchio
Inserito il: 30 novembre 2007 16.16
contributi / Top Poster / Community manager / daniele.aspitalia.com / Blog / 9466 messaggi dal 31 ago 1998 Istalla Microsoft Silverlight!
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

ASP.NET
.NET Framework
LINQ
Silverlight

Vai a:

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.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums