Что возвращается, если оператор select не возвращает строк? - PullRequest
1 голос
/ 01 июня 2011

Я сейчас работаю с SQL в своем программировании и запрашиваю базу данных, вот так.

scCommand = new SqlCommand("SELECT LegislationID FROM Legislation WHERE Number =  @ECERegulation", sconConnection);
        scCommand.Parameters.Add("@ECERegulation", SqlDbType.NVarChar);
        scCommand.Parameters["@ECERegulation"].Value = strECERegulation;

        return (int)scCommand.ExecuteScalar();

Мой вопрос: что будет возвращено, если мой параметр не будет соответствовать чему-либотаблица, к которой я обращаюсь?Мне нужно заявление if, чтобы справиться с несоответствующей ECERegulation.Будет ли это вернуть ноль?Или это вернет LegislationID ноль?Любая помощь будет оценена.

Ответы [ 3 ]

4 голосов
/ 01 июня 2011

документы :

Возвращаемое значение
Первый столбец первой строки в наборе результатов или нулевая ссылка (Ничегов Visual Basic), если набор результатов пуст.Возвращает максимум 2033 символа.

1 голос
/ 02 июня 2011

Вы можете найти ноль, используя Nullable . Вы также можете передать ошибку приведения и вернуть ноль следующим образом.

int? GetSomething()
{
     .....
     .....
     return (int?)TypeDescriptor.GetConverter(typeof(int?)).ConvertFrom(scCommand.ExecuteScalar());
}
1 голос
/ 01 июня 2011

Если запись не найдена, она вернет NULL.Таким образом, вы получите ошибку приведения.

Вам необходимо проверить результат на ничтожность до приведения.А также решил, будет ли выбрасываться исключение или возвращать ноль, в зависимости от ваших бизнес-правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...