どのバイナリデータの表現はどのようなもので、どのようなキャストが許されていますか?それがなければ、どんなプログラマーでもいくぶん盲目的です。この場合、MS SQLのデフォルトの日付値は1900-01-01です。古いCLRでは、DBNull.Valueを値として持つAddWithValueは、fieldをdefaultに設定するのと同じでした。 私は4.0のCLR環境を扱っていませんでしたが、NULLをDBNullにキャストできますか?いずれにせよ、それは日付の値ではなく、NULLを暗黙的にDateにデフォルト値でキャストすることができますか? (後者はMSが標準からもう一度離れると言いますが、NULLはオブジェクトへのポインタと等しくなければなりません)おそらく文書化されていない副作用でしょう。
public SqlParameter AddWithValue(
string parameterName,
object value
)
パラメータ
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx
日付と日時は、NULLにすることはできません。安全性の理由から、通常、データを読み取るとデフォルト値を得る結果になります。それは別のチェックが必要です(isDBNull?)
SQLの日付の正当な値(少なくともMicrosoftのフレーバー)は、0001-01-01から9999-12-31までです。明示的に指定する必要があります。そうでない場合は、デフォルトが使用されます。 。
「NULL」とは何ですか? 'NULL'はC#キーワードではありません。 – Dai
また、その型推論が必ずしも正確ではないので、 'AddWithValue'も避けてください。明示的な 'SqlDbType'値を指定してください。 – Dai