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,

Другие вопросы по тегам