【问题标题】:ASP.Net VB Check if datas exist in databaseASP.Net VB 检查数据库中是否存在数据
【发布时间】:2013-05-01 18:06:03
【问题描述】:

如何检查数据库中是否存在数据或是否为 NULL。我收到以下错误 Object cannot be cast from DBNull to other types。我需要在代码中添加 IsDBNULL 吗?

SignedOn.Text = Convert.ToDateTime(reader("SignedOn")).ToShortDateString()

【问题讨论】:

    标签: asp.net vb.net sqldatareader


    【解决方案1】:

    你可以像下面这样检查

    If NOT IsDbNull(reader("SignedOn")) Then
       SignedOn.Text = Convert.ToDateTime(reader("SignedOn")).ToShortDateString()
    End If
    

    基于 cmets 编辑:

    • 当您知道列的确切类型后,您可以调用与该类型相关的方法,例如 reader.GetDateTimereader.GetString
    • 转换后如果结果可能为空,那么您最好在调用ToShortDateString 之前检查是否为空
    • 如果您在 varchar 列中存储日期时间,则可以使用 DateTime.TryParse 方法

    【讨论】:

    • 您应该查看 .GetDateTime (.GetString, GetInt32 ) 方法,而不是使用“GetValue”(我相信它用作默认值)。
    • “检查”是正确的。我不是在争论那个。但我认为您使用此代码默认为“GetValue”:reader("SignedOn")
    • 这是我认为正确的 C# 转换为 VB.NET 的代码。
    • If Not (dataReader.IsDBNull(0)) Then dim d1 As DateTime = dataReader.GetDateTime(0) End If
    • 我不知道 by “列名”。这将不得不尝试。但经验法则是,当类型已知时,“GetString”“GetDateTime”优先于“GetValue”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多