数据库里的数据时这样1972-2-3 0:00:00(BirthDay来的),但是我从数据库里面读取数据时user.BirthDay = (DateTime)row["BirthDay"];却出错!其中user.BirthDay 的数据类型是DateTime;
但是却提示 “指定的转换无效”
这个是什么原因!是不是因为数据库里面的数据后面有了时分秒而出错!如果是的话那要怎么样转换!
在线等高手!
但是却提示 “指定的转换无效”
这个是什么原因!是不是因为数据库里面的数据后面有了时分秒而出错!如果是的话那要怎么样转换!
在线等高手!
{
user.BirthDay = (DateTime)row["BirthDay"];
}
如果你在定义数据库表的字段类型是就是指定日期时间类型的,那么你贴的这个顶多算是打印结果,而真实的日期时间只是一种浮点数而已。数据库的日期时间,在.net客户端驱动中通常都会正确转换为日期时间,跟你打印出来的这个格式没有关系。只是像#1楼一样要额外考虑数据库允许字段为NULL的问题(如果你定一个数据库表这个字段不能为NULL,则不用考虑)。
{
user.BirthDay = (DateTime)row["BirthDay"];
}
这个正解,肯定有日期为空或非法日期
DateTime birthDay;
if (DateTime.TryParse(row["BirthDay"],out birthDay))
{
user.BirthDay = birthDay;
}
而且数据库里面的birthday是datetime类型的
5楼的代码就是将object类型的数据尝试转换为datetime类型,若成功则返回改值也可以用as关键字来进行转换Datetime birthday = row["BirthDay"] as Datetime;
用as运算符的好处就是,如果转换失败则返回null,并不抛出异常信息。
user.BirthDay=DateTime.Parse(row["BirthDay"]);//这个就保证不了不会给你来个什么异常错误了