VB.Net - SQLDataReader 中的错误和“从类型 'DBNULL' 到类型 'Date' 的转换无效

VB.Net - Error in SQLDataReader and "Conversion from type 'DBNULL' to type 'Date' is not valid

我是 VB.Net 的新手,必须使用 VB.Net 做一个 "crash get 'er done" 项目。我已经找到了解决方法(仅用了 4 天),但现在 运行 遇到了一个严重的问题。

SQL 服务器数据库中有几个日期列,有些是 NULL。我正在尝试建立一个网格控件,并有一个自定义 class 来处理每个 "row".

的数据

我有一个 SQLDataReader 设置:

Using sdr As SqlDataReader = cmd.ExecuteReader()

错误触发于:

' this is an abbreviated statement of the original - many more values being passed
appsList.Add(New PromiseAppClass(sdr("PrimID"), sdr("lastname"),
     sdr("firstname"), sdr("middleinitial"), sdr("othernames"), 
     sdr("ssn"), sdr("date1"), sdr("date2")))   

date1 和 date2 在数据库中为 NULL,因此 reader 无法尝试转换以调用创建对象(我假设 - VB 不是太明确- 对我来说 - 详细说明问题出在哪里)。这两项都在 PromiseAppClass 中设置为日期,具有正常的 getters/setters.

如何解决?有没有一种方法可以在 class 中对特定变量进行编码,以便它可以在 tested/set 中?或者将上述语句中的 NULL 日期转换为可接受的日期的方法?我不想使用字符串,也不太确定我不会 运行 遇到同样的问题,但现在它无法将 NULL 转换为字符串。

尝试用

替换 sdr("date1")
 If(sdr("date1") is nothing,nothing,sdr("date1"))

If(IsDbNull(sdr("date1")),nothing,sdr("date1"))