关于 ASP.NET 和 DBNull 类型比较的问题
我有一个从 MSSQL 数据库中提取文章记录的函数。 有些是 PDF 的 URL,有些是存储在 SQL 中的实际文章。 存储的文章在记录中没有 URL (DBNull),因此我希望能够解析它。 我尝试了一个简单的测试:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
但是,我收到“从类型“DBNull”到类型“String”的转换无效。
”异常。 有趣的是,当我对上述条件进行监视时,它返回 True 或 False。
有人知道为什么会发生这种情况和/或解决这个问题的方法吗? 谢谢!
I have a function that pulls articles records from an MSSQL database. Some are URLs to PDFs, and other are actual articles stored in the SQL. The articles that are stored do not have a URL (DBNull) in the record, so I want to be able to parse that. I tried a simple test:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
However, I get the "Conversion from type 'DBNull' to type 'String' is not valid.
" exception. The funny part is, when I do a watch on the above conditional, it returns True
or False
.
Anyone know why this is happening and/or a way to fix this? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我总是记录下来使用这个测试:
I always just use this test on the record:
为什么不直接使用:
Why not just use:
我喜欢
I like
尝试
Try
该错误告诉您
Row.Item("url")
是一个System.String
,因此此时的值不会是DbNull
。尝试这样的事情:
The error is telling you that
Row.Item("url")
is aSystem.String
so the value at this point will not byDbNull
.Try something like this:
你不能这样做吗
Can't you just do
我的偏好是:
在 VB 中,您还可以直接使用
IsDBNull
函数(Microsoft.VisualBasic
免责声明):My preference is:
In VB, you can also use the
IsDBNull
function (Microsoft.VisualBasic
disclaimer) directly :用这个。
您会发现在这种情况下必须使用 is 并且需要比较值而不仅仅是类型。 您可能还想将其放入可重用函数中,您可以使用它来返回任何内容而不是 dbnull
Use this.
You will find that you must use is in this case and you nee dto compare the values not just the types. You may also want to put it into a reusable function that you can use to return nothing instead of dbnull