2012-03-21 4 views
11
 DbParameter param = comm.CreateParameter(); 
     param = comm.CreateParameter(); 
     param.ParameterName = "@StaffId"; 
     if (!string.IsNullOrEmpty(activity.StaffId)) 
      param.Value = activity.StaffId; 
     param.DbType = DbType.String; 
     comm.Parameters.Add(param); 

Quanto sopra non funziona (ovviamente), oggetto non istanziato. Sto tentando di inserire un NULL nel database quando StaffId NON è popolato. Come posso raggiungere questo obiettivo?Inserimento NULL in DB SQL da C# DbCommand

+1

è possibile utilizzare DBNull.Value –

+0

Perfetto! Se pubblichi questo come risposta, lo contrassegnerò come corretto. – SkonJeet

+0

Fatto ora :) Grazie –

risposta

23

È possibile utilizzare DBNull.Value quando è necessario passare NULL come parametro per la stored procedure.

param.Value = DBNull.Value; 

Oppure si può utilizzare che invece di proprio operatore if:

param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value; 
+1

Grazie per la modifica Andrey - apprezzalo. Sembra folle doverlo lanciare come oggetto (comunque per me). – SkonJeet

7

Prova DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId)) 
    param.Value = activity.StaffId; 
else 
    param.Value=DBNull.Value; 
+0

esiste un modo di utilizzare il? operatore per una sorta di stenografia se altro affermazione qui ?? Sembra che non piaccia la conversione String/DBNull.Value !? – SkonJeet

+1

Prova questo: param.Value =! String.IsNullOrEmpty (activity.StaffId)? activity.StaffId: (oggetto) DBNull.Value; –

3

si potrebbe usare DBNull.Value:

param.Value = DBNull.Value;