この質問をするのはほとんど嫌いですが、以前に何百万回も尋ねられたようですが、他の質問を調査しても、私の場合はまだこれを理解できないようです。
DateTime が null 許容型であることを読み、いくつかの例を試しましたが、SQLDATAREADER が失敗しているデータベースで NULL かどうかを調べようとしています。
エラー
System.Data.SqlTypes.SqlNullValueException: データが Null です。このメソッドまたはプロパティは、「Null 値で呼び出すことはできません」。
詳細クラス
private DateTime? startingDate;
public DateTime? StartingDate
{
get{ return startingDate; }
set{ startingDate = value; }
}
// constructor
Public DetailsClass(DateTime? startingDate)
{
this.startingDate = startingDate;
}
DBクラス
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;
}
}