ExecuteScalar() иногда возвращает пустой, но не нулевой объект. Зачем?
ExecuteScalar()
иногда возвращает пустой объект -not null-, хотя запись существует. Когда я анализирую этот объект с помощью QuickWatch, я вижу, что object.GetType()
равно DbNull
, Я могу обработать этот пустой объект, но мне нужно знать, почему он иногда возвращает пустой объект, хотя запись существует.
string sql = @"SELECT SentDate
FROM dbo.EmailOut
WHERE ID = @ID";
SqlCommand cmd = new SqlCommand(sql, _cnn);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@ID", ID));
object obj = cmd.ExecuteScalar();
if (obj == null)
return false
sentDate = (DateTime)obj;
cmd.Dispose();
Большую часть времени мой запрос выполняется отлично. Можете ли вы проверить мой код?
1 ответ
Возвращаемое значение null
означает, что запись не найдена.
Возвращаемое значение DBNull
означает, что запись была найдена, но значение SentDate
в этой записи NULL
,