【问题标题】:vb.net Date equivalent to String.Emptyvb.net 日期等价于 String.Empty
【发布时间】:2016-07-28 18:06:09
【问题描述】:

在我的程序中,我正在编写一个类来读取一个数据库表中的值,并将它们复制到另一个表中。 在读取字符串字段时,我调用了一个函数,该函数检查字符串值是否为空,如果是,则返回一个空字符串,如果不是,则返回该字符串。 (见下面的代码)

我还有datetime 字段可以包含空值,如果没有类似的函数,我在尝试复制它们时会遇到运行时错误。

如果数据库行中的值为空,我可以使用下面的代码来输入空白日期吗?

 Public Shared Function dbToString(o As Object) As String

    If o Is DBNull.Value Then
        Return String.Empty
    Else
        Return CStr(o)

    End If
End Function

【问题讨论】:

  • Nullable(Of DateTime)
  • @DavidOsborne 嗨,这是要去哪里?在Else Return Nullable(Of DateTime)之后?
  • 我已经添加了答案。

标签: sql database vb.net string dbnull


【解决方案1】:

DateTime 是一种值类型,因此不存在“空白”的概念。您可以使用DateTimeMinValue,但这可能存在问题,并且意图可能不明确。请改用可为空的DateTime

Public Shared Function dbToDate(o As Object) As DateTime?
    If o Is DBNull.Value Then
        Return Nothing
    Else
        Return Convert.ToDateTime(o)
     End If
End Function

【讨论】:

  • 这很有效,除了Return null这一行。它表示不再支持空常量,而是使用 DBNull.Value 代替。但是,使用它后它告诉我 DBNull.Value 不能转换为日期。有什么想法吗?
  • 抱歉,这是一个 C# 主义正在蔓延。Nothing 是你想要的 VB。
【解决方案2】:

您可以轻松地返回Nothing。不需要像 string.empty 这样的东西。

固定代码:

 Public Shared Function dbToString(o As Object) As String
    If o Is DBNull.Value Then
        Return Nothing
    Else
        Return CStr(o)
    End If
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多