2016-07-11 3 views
0

databaseのデータを含むDataRowがあります。 IFの条件で、Null値の各データ列をチェックしたいと思います。 NULLの値をチェックする2つの方法が見つかりました。データ列のDbNull.ValueおよびisDBNull

If IsDBNull(drType("ISShort")) Then 
    StartDate.Visible = True 
Else 
    StartDate.Visible = False 
End If 

If Not drType("ISShort").ToString Is DBNull.Value Then 
    StartDate.Visible = True 
Else 
    StartDate.Visible = False 
End If 

私のために正常に動作しますが、私は使用することをお勧めしている1かわからないどちら?

+1

'drType( "ISShort")に応じですmyDataRow.IsNull(fieldName)を使用することができます。ToStringメソッドは、ですDBNull.Value'は文字列内の何かを変換しているので問題を起こすはずです。それは本当にDBNullです。値ですか? –

+0

はい、使用したのと全く同じコードです – Abdul

答えて

3

私はboolを返しDataRow.IsNullを好む、読みやすく、効率的である:

StartDate.Visible = drType.IsNull("ISShort") 

関連:あなたの第二のアプローチは動作しませんWhich of IsDBNull and IsNull should be used?

注意。 でStringに変換すると、DBNull.Valueにはなりません。コンパイルはoption-strictを指定してoffに設定することを強くお勧めします。

+0

ありがとう@Tim。そして 'DBNull.Value'は何ですか?コードは以前に 'DBNull.Value'を使って書かれていて、コードをデバッグするときにうまくいきました。 – Abdul

+1

最後の点は私のコメントで書いたものです。しかし、@ AbdulはToStringのアプローチで正しい結果を得ていると言いました。どのようにすることができますか? –

+0

'drType(" ISShort ")'は 'boolean'値を含んでいます。私は、テストするための完全なコードセクションを用意しました。 – Abdul

1

第2の場合は不要なので意味がないToString()

注意、あなたがDbNullに

If DbNull.Value.Equals(row.Item(fieldName)) Then 
... 

を使用することができます別の方法があります。また、より高速Which of IsDBNull and IsNull should be used?

関連する問題