【发布时间】:2016-10-26 16:17:36
【问题描述】:
我是 VB.Net 的新手,并且必须使用 VB.Net 做一个“崩溃完成”项目。我已经搞定了(仅用了 4 天),但现在遇到了一个严重的问题。
SQL Server 数据库中有一些日期列,其中一些为 NULL。我正在尝试构建一个网格控件,并有一个自定义类来处理每个“行”的数据。
我设置了 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 中设置为日期,使用普通的 getter/setter。
如何解决?是否有一种方法可以对类中的特定变量进行编码,以便可以在那里对其进行测试/设置?或者将上述语句中的 NULL 日期转换为可接受的日期的方法?我不想使用字符串,也不确定会不会遇到同样的问题,但现在它无法将 NULL 转换为字符串。
【问题讨论】:
-
检查 null 像这样 sdr("date1") != null ?sdr("date1") : ""
-
如果这是一个现有问题的完全重复 - 你能传递一个参考吗?我已经在这里(和其他地方)搜索了 3 个小时,但没有看到“确切”的副本。一般问题可能是相似的——我遇到的情况不一定相同——对我来说。直到 4 天前,我还没有使用 VB,甚至没有使用 VS(至少近 20 年没有)——所以如果我在这里遗漏了一些东西——我道歉。我有一个极端的时间表,我试图尽快破译。
-
sdr.IsDBNull(index)会告诉您该索引处的列是否为 DbNull。如果是,您需要决定要通过什么。您不能将 DBNull 转换为作为错误消息点的日期, -
问题不重复!!
标签: sql asp.net .net vb.net sqldatareader