我在阅读来自我的通话表的电话时遇到问题。我的一个列是DateTime列,如果调用尚未关闭,则此列允许为null。当我执行我的C#代码来获取Calls表中的所有调用时,我得到一个错误,数据为空,当没有数据时无法读取。我想如果我有一个If语句检查该列是否为空,那将解决问题......但这不起作用。
以下是我遇到问题的代码:
public void GetAllCalls(Connection connectionObject)
{
try
{
if (memoryObject.GetCallCount() != 0)
{
memoryObject.DeleteAllCalls();
}
SqlCommand getCalls = new SqlCommand("sp_getAllCalls", connectionObject.getDatabaseConnection());
getCalls.CommandType = CommandType.StoredProcedure;
dataReader = getCalls.ExecuteReader();
if (dataReader.HasRows)
{
while (dataReader.Read())
{
if (dataReader.GetDateTime(8).Equals(DBNull.Value))
{
Call newCall = new Call(dataReader.GetString(0), dataReader.GetString(1), dataReader.GetString(2),
dataReader.GetString(3), dataReader.GetString(4), dataReader.GetString(5),
dataReader.GetString(6), dataReader.GetDateTime(7), Convert.ToDateTime(null),
dataReader.GetString(9), dataReader.GetString(10), dataReader.GetString(11),
dataReader.GetString(12));
memoryObject.AddCall(newCall);
}
else
{
Call newCall = new Call(dataReader.GetString(0), dataReader.GetString(1), dataReader.GetString(2),
dataReader.GetString(3), dataReader.GetString(4), dataReader.GetString(5),
dataReader.GetString(6), dataReader.GetDateTime(7), dataReader.GetDateTime(8),
dataReader.GetString(9), dataReader.GetString(10), dataReader.GetString(11),
dataReader.GetString(12));
memoryObject.AddCall(newCall);
}
}
dataReader.Close();
}
else
{
dataReader.Close();
functionsObject.displayMessage("No Calls Found", "No calls were found on the system");
}
}
catch (Exception error)
{
logNewError(error, "GetAllCalls", connectionObject);
}
}