2012-03-21 21 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); 

上記は機能しません(明らかに)、オブジェクトはインスタンス化されません。私はStaffIdが入力されていないときにデータベースにNULLを挿入しようとしています。どうすればこれを達成できますか?C#DbCommandからNULLをSQL DBに挿入する

+1

あなたがDBNull.Valueの –

+0

パーフェクトを使用することができます!これを回答として投稿すると、正しいものとしてマークされます。 – SkonJeet

+0

完了しました:)ありがとう –

答えて

23

ストアドプロシージャにパラメータとしてNULLを渡す必要があるときは、DBNull.Valueのを使用することができます。

param.Value = DBNull.Value; 

またはあなたのifオペレータの代わりにそれを使用することができます。

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

Andreyの編集に感謝します。しかし、これをオブジェクトとしてキャストしなければならないのは狂っているようです(とにかく私に)。 – SkonJeet

7

DBNull.Value

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

の使い方はありますか? elseの文はここにありますか?それは文字列/ DBNull.Value変換が好きではないようです! – SkonJeet

+1

これを試してください:param.Value =!string.IsNullOrEmpty(activity.StaffId)? activity.StaffId:(オブジェクト)DBNull.Value; –

3

あなたはDBNull.Valueを使用することができます試してみてください。

param.Value = DBNull.Value; 
関連する問題