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'。
无法确定条件表达的类型,因为之间没有隐式转换 'datetime'和'null'。
从 DateTime
DateTime?
添加铸件 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
?如果您的数据库具有日期时间值,则应该是:
- 存储在数据库中的实际
Date
或DateTime
键入 - 以
DateTime
类型检索
请勿将DateTime
实例存储为字符串,也不要将它们作为字符串检索。