2017-04-14 6 views
2

私はかなり簡単なことだと思っていますが、問題を抱えています。 .NETアプリケーションでSQLCommandを使用して新しいレコードをテーブルに挿入するコードがあります。SQLParameterで潜在的にnullの日時値を扱う

私はdatetime値でもnullでもかまいません。以下のコードは機能していないようです:

command.Parameters.AddWithValue("@SettleDate", 
IIf(String.IsNullOrEmpty(SettleDate), Nothing, DateTime.Parse(SettleDate))) 

ここで、 "SettleDate"は日付がnullの可能性のある文字列です。私はDatetime.Parseメソッドからになりそうだた、私は次のエラーを取得する実行されたときに、このコードは、しかし、NULL値を解析しようとしないの条件をカバーすると思うだろう:

String reference not set to an instance of a String. 
Parameter name: s 

これは可能性がどのように? 「SettleDate」がnullの場合、それは決して解析メソッドに到達しません。最初のいずれかに該当する場合

答えて

0

あなたが一緒にDBNull.Valueの

If(String.IsNullOrEmpty(SettleDate), DBNull.Value, DateTime.Parse(SettleDate))) 

The IF operatorをVB.NETの短絡opertatorを使用する必要があり、IIF関数に反して、式の両辺を評価しようとしません。 。また、null値をSqlParameterに渡すにはDbNull.Valueを使用することに注意してください。

+0

ああ、それは私が実現しなかった非常に微妙なことです。ありがとう。 – DeveryDay

関連する問題