Правильное использование AddWithValue в C # для метода Db - PullRequest
0 голосов
/ 03 мая 2019

Попытка сделать следующее:

 public static int GetJobStatusByNumber(int jobNumber)
    {
        SqlConnection connection = null;
        try
        {
            connection = new SqlConnection(connString);
            connection.Open();

            SqlCommand cmd = connection.CreateCommand();
            cmd.CommandText = @"select STATUS  from JOB
                                where JOB_NUMBER = @jobNumber";

            cmd.Parameters.AddWithValue("@jobNumber", jobNumber);

            int result = ((int)cmd.ExecuteScalar());
            return result;
        }

        finally
        {
            if (connection != null)
                connection.Close();
        }
    }

Можно добавить переменную 'jobNumber' к запросу с помощью 'AddWithValue', но я получаю ошибку приведения

Сообщение: System.InvalidCastException: указанное приведение недействительно.

Что здесь не так?

Спасибо.

1 Ответ

2 голосов
/ 03 мая 2019

ExecuteScalar () возвращает первый столбец первой строки в наборе результатов, возвращенных запросом.

Возможны 2 сценария:

  1. первый столбец не является целым.
  2. запрос возвращает 0 строк - в этом случае ExecuteScalar () вернет ноль.

для пункта 1 - убедитесь, что первый столбец является целым.
для пункта 2 - убедитесь, что у вас есть строки. Возможное решение будет:

var result = 0;
var tempResult = cmd.ExecuteScalar();

if (tempResult != null) {
    result = (int)tempResult;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...