【发布时间】:2017-03-02 23:05:03
【问题描述】:
谁能告诉我为什么我在使用下面的代码时收到以下错误.. 从“DBNull”类型到“Boolean”类型的转换无效。
Dim newOrderID As Guid = Guid.Parse(orderID)
Dim DBConnect2 As New DBConn
Using db As DbConnection = DBConnect2.Conn("DBConnectionString")
Dim cmd As SqlCommand = DBConnect2.Command(db, "SelectWebLinkVisible")
cmd.Parameters.Add(New SqlParameter("orderID", SqlDbType.UniqueIdentifier, ParameterDirection.Input)).Value = newOrderID
db.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim webLinkVisible As Boolean
While DR.Read
webLinkVisible = DR("webLinkVisible")
End While
DR.Close()
DR = Nothing
cmd.Dispose()
cmd = Nothing
db.Dispose()
db.Close()
End Using
我什至尝试用以下内容替换 WHILE 位,并认为页面会重定向,因为它尝试读取的数据肯定是 NULL,但它什么也没做..
While DR.Read
If DR("webLinkVisible") is nothing Then
Response.Redirect("www.bbc.co.uk")
End If
End While
【问题讨论】:
-
旁注:你不需要在
db上调用Close或Dispose,这就是using块的结尾隐含地为你做的事情。如果您要保留它们,则应撤消呼叫(在您使用Disposed 后不要拨打Close)。您的阅读器和命令也应该包含在usings 中。也无需将Nothing分配给这些值,因为它们无论如何都超出了范围。