mer*_*011 9 .net vb.net asp.net sql-server-2008
为什么以下代码:
A = not IsDBNull(CurRow("BuyBook")) AndAlso CType(CurRow("BuyBook"), string) = "Yes"
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
Conversion from type 'DBNull' to type 'String' is not valid.
Run Code Online (Sandbox Code Playgroud)
当AndAlso根据这篇文章被认为是短路的时候:
小智 10
你是对的.AndAlso
是短路的.
然而,错误来自调用 CurRow("GuyBook")
(在调试器中验证这一点,以确保我不是骗子或做出一些疯狂的假设或只是误报*;-).在询问值之前,您需要询问DataRow 是否有值.也就是说,使用:
CurRow.IsNull("BuyBook")
Run Code Online (Sandbox Code Playgroud)
快乐的编码.
*一个人应该能够与之比较DBNull.Value
或使用IsDBNull
.但是,我相当肯定我在抛出这些异常而不是返回一个DBNull
对象之前遇到了一行.首先找出 - 在调试器的立即窗口中 - 确切地说哪个表达式抛出了异常.
你有没有试过这样比较:
If CurRow("BuyBook") Is DBNull.Value Then
'...
End If
Run Code Online (Sandbox Code Playgroud)