我的binder方法结束时的以下语句会引发错误:
return reader.GetDateTime(ordinal);
Reader是IDataReader的一个实例。 在调试器中,我发现序数的值为1,读者[1]的值为“12/31/9999”
抛出的错误是“指定的强制转换无效”
这里有什么问题?为什么不能将它转换为DateTime对象?
答案 0 :(得分:0)
调用reader.GetValue(1).GetType().Name;
您的数据库类型很可能是String,而不是DateTime。
您可以尝试DateTime.Parse(reader.GetValue(1).ToString());
答案 1 :(得分:0)
读者1的值为" 12/31/9999"
带引号?也就是说,数据类型是某种字符串或字符类型?根据{{3}},基础数据类型必须是DateTime:
不进行转换;因此,检索到的数据必须已经是DateTime对象。
如果是这种情况,您需要将值作为字符串获取并自行转换。也许是这样的:
var date = reader.GetString(ordinal);
var result = DateTime.MinValue;
DateTime.TryParse(date, out result);
return result;