我幾乎不想問這個問題,好像它已被問過一百萬次之前,但即使在我研究另一個問題時,我仍然無法解決這個問題。SQLDataReader的可以爲空的日期時間
我看到DateTime是一個可爲空的類型,我嘗試了幾個例子,但我想弄清楚它是否爲數據庫中的NULL,我的SQLDATAREADER失敗了。
錯誤
System.Data.SqlTypes.SqlNullValueException:數據爲Null。此方法或屬性無法在「空值」上調用。
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
我明白你在說什麼,我只是留下了問號 – Jay