【问题标题】:What can be assigned in bool and DateTime variables in case of null?在 null 的情况下,可以在 bool 和 DateTime 变量中分配什么?
【发布时间】:2017-03-11 16:50:00
【问题描述】:
DataTable rdrFeedback;
using (rdrFeedback = CommonHelper.GetDataTable(CommandType.StoredProcedure, "[Crew].[Up_CM_SEAFARER_FEEDBACK]", sqlParams.ToArray()))
{
    foreach(DataRow dRow in rdrFeedback.Rows)
    {
            bool? AnswSix = dRow["ANSW_SIX"] != DBNull.Value ? (bool)dRow["ANSW_SIX"] : DBNull.Value; 
            DateTime? AcknowledgedOn = dRow["ACKNOWLEDGED_ON"] != DBNull.Value ? Convert.ToDateTime(dRow["ACKNOWLEDGED_ON"].ToString()) : null;
    }
}

上面的语句在从存储过程中获取数据时给出了这个错误:

无法确定条件表达式的类型,因为之间没有隐式转换 'bool' 和 'System.DBNull'。

无法确定条件表达式的类型,因为之间没有隐式转换 “日期时间”和“空”。

【问题讨论】:

    标签: c# sql-server


    【解决方案1】:

    DateTimeDateTime? 添加演员表

    DateTime? AcknowledgedOn = dRow["ACKNOWLEDGED_ON"] != DBNull.Value 
       ? (DateTime?) Convert.ToDateTime(dRow["ACKNOWLEDGED_ON"].ToString()) 
       : null;
    

    bool 也是如此,但您必须将 null 指定为替代值,而不是 DBNull.Value

    bool? AnswSix = dRow["ANSW_SIX"] != DBNull.Value 
      ? (bool?)dRow["ANSW_SIX"] 
      : null; 
    

    还有你为什么使用Convert.ToDateTime?如果您的数据库有一个日期时间值,它应该是:

    1. 在数据库中存储为实际的 DateDateTime 类型
    2. 检索为 DateTime 类型

    不要将DateTime 实例存储为字符串,也不要将它们作为字符串检索。

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2023-01-07
      • 2013-05-28
      相关资源
      最近更新 更多