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

时间:2016-10-26 16:17:37

标签: sql asp.net .net vb.net sqldatareader

我是VB.Net的新手,必须使用VB.Net做一个“崩溃完成”项目。我已经有了一些方法(仅用了4天),但此时我遇到了一个严重的问题。

SQL Server数据库中有几个日期列,有些是NULL。我正在尝试构建一个gridcontrol,并有一个自定义类来处理每个“行”的数据。

我设置了一个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,因此读者未能尝试转换以进行调用以创建对象(我假设 - 对于我来说VB不太明确 - 在详细说明问题的哪个位置在这儿)。这两个项目都在PromiseAppClass中设置为Dates,使用普通的getter / setter。

如何解决?是否有一种方法来编写类中的特定变量,以便可以在那里进行测试/设置?或者将上述语句中的NULL日期转换为可接受的方法?我不想使用字符串,也不确定我不会遇到同样的问题,但现在它无法将NULL转换为字符串。

1 个答案:

答案 0 :(得分:2)

尝试用

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

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