3

推奨されるアプローチ:

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = value;
}

また

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
4

2 に答える 2

4

パラメータに null 値を渡したい場合はDBNull.Value、2 番目の例のように渡す必要があります。

パラメーター値として割り当てる場合null、パラメーターはプロシージャーに送信されず、プロシージャー呼び出しが失敗する (パラメーターが必要な場合) か、null の場合もそうでない場合もあるパラメーターのデフォルト値を使用します。 .

于 2010-02-27T11:59:01.743 に答える
1

ご希望の機能により異なります。

値として渡すnullと、SqlCommand はパラメーターがまったく渡されていない場合と同じように扱います。たとえば、ストアド プロシージャで必要なパラメーターである場合、クエリは失敗します。

渡すDBNull.Valueと、SqlCommand はそれを SQL null が渡されたものとして扱います。

于 2010-02-27T12:05:45.757 に答える