Где ошибка в SQL - запросе? - MySQL

Узнай цену своей работы

Формулировка задачи:

...
query = "insert into servise.orders (receipt_date, mulfunction, mark, payment_amount, owners_id, devices_id, state_id) values('" + Receipt_date + "','"
                            + Mulfunction + "','" + Mark + "','" + Sum
                            + "','" + id_owner + "','" + WorkToDivices() + "','" + SearchStartState() + "'); SELECT LAST_INSERT_ID()";
cmd = new MySqlCommand(query, connection);
connection.Open();
id_order = (int)cmd.ExecuteScalar();//тут выводит Exeption: заданное приведение является недопустимым.
...
При этом, в query находится такой запрос: "insert into servise.orders (receipt_date, mulfunction, mark, payment_amount, owners_id, devices_id, state_id) values('2016-03-30','Не работает экран',' ','0','1','11','8'); SELECT LAST_INSERT_ID()" receipt_date - имеет тип "DATE", думаю, что ошибка из-за нее mulfunction, mark - VARCHAR payment_amoun - INT owners_id, devices_id, state_id - INT - это ключи, которые указывают на другие поля других таблиц
id_order = (int)cmd.ExecuteScalar();
Ошибка в этом операторе. Как я понял, она возникает из-за того, что не может быть произведен правильный перевод типов. Как исправить?

Решение задачи: «Где ошибка в SQL - запросе?»

textual
Листинг программы
id_order = (int)(ulong)cmd.ExecuteScalar();

Объяснение кода листинга программы

  1. В данном коде выполняется SQL-запрос.
  2. Результатом выполнения запроса является единственное значение, которое сохраняется в переменной id_order.
  3. Переменная id_order имеет тип данных int, что предполагает, что в нее будет сохранено целочисленное значение.
  4. Перед выполнением запроса используется метод ExecuteScalar, который получает первый результат на выходе и возвращает его как объект DataReader.
  5. Для получения целочисленного значения используется приведение типа данных (int)(ulong)cmd.ExecuteScalar().
  6. Значение, полученное из DataReader, приводится к типу ulong, что предполагает, что оно может быть больше максимального значения int.
  7. Затем значение приводится к типу int, что предполагает, что оно не будет превышать максимального значения int.
  8. Результат приведения типов сохраняется в переменной id_order.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5