我几乎不想问这个问题,好像已经有无数次被问到了,但是即使我研究了其他问题,我仍然不能在我的情况下弄清楚这个问题。
我读到DateTime是可空类型,我尝试了一些示例,但我正在尝试弄清楚它是否为NULL在数据库中,我的SQLDATAREADER失败了。
错误
System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot 'be called on Null values.'
DetailsClass
private DateTime? startingDate;
public DateTime? StartingDate
{
get{ return startingDate; }
set{ startingDate = value; }
}
// constructor
Public DetailsClass(DateTime? startingDate)
{
this.startingDate = startingDate;
}
DBClass
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = con.CreateCommand())
{
List<DetailsClass> details = new List<DetailsClass>();
DetailsClass dtl;
try
{
con.Open();
cmd.CommandText = "Stored Procedure Name";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@MyParameter", myparameter);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
dtl = new DetailsClass((
reader.GetInt32(reader.GetOrdinal("MEMBERSHIPGEN"))),
reader.IsDBNull(1) ? null : reader.GetString(reader.GetOrdinal("EMAIL")),
reader.GetDateTime(reader.GetOrdinal("STARTINGDATE")));
details.Add(dtl);
}
reader.Close();
return details;
}
}
DateTime
不是可空类型,DateTime?
才是。 - Corak