2016-05-02 3 views
-1

SQL Serverテーブルにレコードを挿入するコードがあります。このテーブルには、null値がいくつかある場合があります(擬似NULL(空)の値で最初に置き換えられない場合)。具体的には、varcharsです。それ以外の場合はnull SQLパラメータを安全にする方法はあまり冗長ではありませんか?

私はnullをチェックし、それらのインスタンスにString.Emptyをを割り当てない場合:

if (null == _PatternOrdinal) 
{ 
    rs.PatternOrdinal = string.Empty; 
} 
else 
{ 
    rs.PatternOrdinal = _PatternOrdinal; 
} 

が...それが例外をスローし、「パラメータ化クエリ「(@UnitのVARCHAR(25)、 @ReportID int型、@ NextExecution日時、@ NextExは@PatternOrdinal '供給されなかった」パラメータを期待する'は「

IOWは、コードは単純に、このある場合:。

rs.PatternOrdinal = _PatternOrdinal; 

...上記のifブロックの代わりに、クラッシュします。

だから私はいくつかのパラメータでそれを行う必要があります。この定期的な脱線を回避する方法はそれほど冗長ではありませんか?

答えて

5

あなたはnull-coalescing operatorを使用することができます。

rs.PatternOrdinal = _PatternOrdinal ?? string.Empty; 

オペランドがnullでない場合には、左側のオペランドを返します。それ以外の場合は、右側のオペランドを返します。

ただし、空の文字列とnullの値が同じではないことに注意してください。空の文字列はまだ値ですが、nullは定義された値がないことを意味します。

nullの値を保存する必要がある場合は、空の文字列の代わりにDbNull.Valueを使用する必要があります。

関連する問題