修改:为了清楚起见,我没有询问(Null
vs DBNull.Value
)或(IsDBNull
vs IsNull
)
好吧,我总是使用IsDBNull()
来评估数据库字段并检查值是否为DBNull
,但我注意到在许多代码示例中,人们使用DBNull.Value
来达到同样的目的。方法如下:
If IsDBNull(obj) Then DoSomething() ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.
同样在C#中:
if (obj == DBNull.Value) {DoSomething();}
我做了一些搜索,以确定它们是否相同,或者它们之间是否有任何差异,但找不到任何有用的文章,这些文章一起显示这两种特定的评估方法。
This MSDN link演示DBNull.Value.Equals
如何与IsDBNull
函数做同样的事情,但从未提及/建议使用DBNull.Value
进行评估,而不使用Equals
功能
所以,我真的很想知道,这两者之间是否存在任何实际差异,以便推荐其中一个相对于另一个?或者他们做同样的事情?
答案 0 :(得分:-1)
IsDbNull是一个返回布尔值的测试标志,是一个用于 If Statements 的快捷方式。您仍然可以使用Obj = DBNull.value方法,但 IsDbNull是MS的首选方法。
但是,如果要使用select case语句,仍需要使用DBNull.value对象
Select case Obj
Case DBNull.value
Case "Whatever"
End Select
当然,如果你想将一个字段设置回一个空值,你还需要DBNull.Value。
类似于Double.IsNaN和Double.NaN。