Если условие для запроса с пустым результатом - PullRequest
5 голосов
/ 12 ноября 2011

Я написал этот запрос SQL:

 SqlCommand cmd2 = new SqlCommand();
        cmd2.Connection = new SqlConnection(Class1.CnnStr);
        cmd2.CommandText = "SELECT MAX(Code) FROM Table WHERE Number=@Number ";
        cmd2.Connection.Open();
        cmd2.Parameters.AddWithValue("@Number", Hidden_txt.Text);
        cmd2.ExecuteNonQuery();

и я хотел бы добавить условие if:

if (cmd2.ExecuteScalar()=="Null")
{....}

Как добавить условие if, если мой запрос не имеет ответа?

Ответы [ 3 ]

8 голосов
/ 12 ноября 2011

Удалите вызов cmd2.ExecuteNonQuery, затем добавьте что-то вроде этого:

object maxCode = cmd2.ExecuteScalar();
if (maxCode == null)
{
    // Null
}
else
{
    // do something with maxCode, you probably want to cast - e.g. (int)maxCode
}
3 голосов
/ 12 ноября 2011

Вы можете использовать читатель следующим образом:

Это предполагает, что тип кода является целым числом, поэтому при необходимости измените

SqlDataReader reader = cmd2.ExecuteReader;
int code = 0;
if (reader.Read) {
     //whatever if it has a result
     code = reader.GetInt32(0);
} else {
    //Whatever if it finds nothing
}
2 голосов
/ 12 ноября 2011

Согласно MSDN :

Если первый столбец первой строки в наборе результатов не найден, возвращается пустая ссылка (Nothing в Visual Basic). Если значение в базе данных равно нулю, запрос возвращает DBNull.Value.

Итак, вы могли бы просто написать:

if (cmd2.ExecuteScalar() == null)
{....}

В качестве альтернативы, вы можете использовать ExecuteReader, а затем проверить, вернулся ли считыватель HasRows .

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