DateTime
和string
是不同的数据类型,不能相互转换,比如int
和float
。您需要解析string
才能检索DateTime
. 尝试使用下一个代码片段尝试使用DateTime
当前文化中提供的默认格式进行解析。
OleDbDataReader dbRead = cmd.ExecuteReader();
while (dbRead.Read())
{
product.DateReleased = dbRead["Date Released"] != DBNull.Value ? DateTime.Parse(dbRead["DATE"]) : null;
product.DatePublished = dbRead["Publish_Date"] != DBNull.Value ? DateTime.Parse(dbRead["Publish_Date"]) : null;
}
假设DatePublished
和DateReleased
是 类型DateTime?
。如果你有特定的日期格式,你可以使用DateTime.ParseExact
方法,它以格式为参数,例如
DateTime.ParseExact(dbRead["Date Released"], "dd.MM.yyyy", CultureInfo.InvariantCulture)
如果DatePublished
和DateReleased
是 类型string
,那么您应该调用ToString()
DateTime,将其转换为字符串,例如:
product.DateReleased = dbRead["Date Released"] != DBNull.Value ? dbRead["DATE"].ToString() : "No Date available";
product.DatePublished = dbRead["Publish_Date"] != DBNull.Value ? dbRead["Publish_Date"].ToString() : "No Date Available";
如果数据库中的基础列具有DateTime
类型,则可以访问类GetDateTime
上的方法OleDbDataReader
,例如
product.DateReleased = dbRead.GetDateTime("Date Released");