【发布时间】:2011-06-22 18:37:31
【问题描述】:
我的 DAL 中有一个查询结果为 1 个项目,即一个日期。它是日期或空值。但是当值为空时我得到一个错误。
从“DBNull”类型到“Date”类型的转换无效。
查询
Public Function GetOrderDepositByOrderID(ByVal OrderID As Integer) As Date
myconn.Open()
Dim date As Date
Dim sql As String = "SELECT ifnull(OrderDeposit, '1900-01-01') FROM Order WHERE OrderID = ?"
Dim cmd As New OdbcCommand(sql, myconn)
cmd.Parameters.AddWithValue("OrderID", OrderID)
date= cmd.ExecuteScalar()
'connectie sluiten
myconn.Close()
Return date
End Function
这就是我调用函数的方式。
If bllCust.getOrderDepositByOrderID(OrderID) = DBNull Then
lblBoodschap.Text = ("Deposit not paid.\n")
Else
lblBoodschap.Text = ("Deposit paid.\n")
End If
如果支付了定金,表格中有日期,如果没有,则为空。
欢迎所有帮助!
【问题讨论】:
-
您无法将 DBNull 转换为 DateTime
-
如果 NULL 是您的日期的有效值,那么您应该使用 Nullable
来表示它。 -
我该怎么做呢?我也用查询编辑了我的帖子。
标签: .net vb.net ado.net dbnull