无效的Cast异常。不知道为什么

时间:2011-02-16 21:02:18

标签: vb.net .net

任何人都可以从以下函数中看到为什么我会收到“无效的强制转换异常”?更具体地说,这是错误“从字符串转换”yyyyMMdd“到'Integer'类型无效。

我正在尝试将数据库中的DateTime值转换为格式为“yyyyMMdd”的字符串,因此例如1985年10月22日将为“19851022”。

dbReader(fieldName).ToString("yyyyMMdd")

以下是整个功能......

Private Function GetDBReaderDateValue(ByVal dbReader As IDataReader, ByVal fieldName As String) As String

    If dbReader(fieldName) Is DBNull.Value Then
        Return ""
    Else
        Return dbReader(fieldName).ToString("yyyyMMdd")
    End If

End Function

2 个答案:

答案 0 :(得分:1)

好像你在ToString上调用了Object ...并且没有带有String参数的重载。您可能需要先转换为DateTime

答案 1 :(得分:1)

如果fieldName不是DateTime,转换将失败。首先尝试将其转换为日期时间:

Dim dt As Date
If Date.TryParse(dbReader(fieldName).tostring, dt) Then
     Return dt.ToString("yyyyMMdd")
Else
     Throw New ArgumentException("GetDBReaderDateValue needs a Date-Column as parameter!")
End If