С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 26

Программа ругается на cmd.ExecuteNonQuery()

14.02.2019, 16:56. Показов 7436. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста, где у меня ошибка в коде(ругается на cmd.ExecuteNonQuery()).
Предупреждаю сразу, что в C# я недавно(начал где - то 3-4 месяца назад), так что за неправильно сформулированные понятия прошу не пинать!
C#
1
2
3
4
5
6
7
8
9
10
11
        private void button1_Click(object sender, EventArgs e)
        {
 
            MySqlConnection conn = new MySqlConnection("server=знать вам неважно;port=3306;Database=и это тоже;uid=и это;password=и это;charset=utf8");
            conn.Open();
            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "set @max_msg_id = (select MAX(msg_id) from messages)+1; INSERT into messages(user, message, msg_id, date, time) values ('" + label4.Text.ToString() + "', '" + richTextBox2.Text + "', @max_msg_id, '" + DateTime.Now.ToString("yyyy-MM-dd") + "', '" + DateTime.Now.ToString("HH:mm:ss") + "')";
            cmd.ExecuteNonQuery();
            conn.Close();
        }
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2019, 16:56
Ответы с готовыми решениями:

Ругается на ExecuteNonQuery();
string card = "TransistorCard"; sqlConnection.Open(); using (var MyConnection = new...

Ругается на "cmd.ExecuteNonQuery();"
Здравствуйте! Прошу помощь, так как сам уже просто отчаялся! есть хранимая процедура: CREATE PROCEDURE . @tk nvarchar(50), @treck...

cmd.ExecuteNonQuery();
Здравствуйте. Кто разбирается, помогите пожалуйста. нажимаю на кнопку изменить, выходит эта ошибка OleDbException was unhandled. как...

11
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18250 / 14174 / 5366
Регистрация: 17.03.2014
Сообщений: 28,851
Записей в блоге: 1
14.02.2019, 17:24
Prosto_chelovek, как именно ругается?
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
14.02.2019, 17:27
Цитата Сообщение от Prosto_chelovek Посмотреть сообщение
Подскажите пожалуйста, где у меня ошибка в коде(ругается на cmd.ExecuteNonQuery())
Как ругается?

Пара замечаний по коду:

1. Насколько я помню для MySqlCommand, как и для любой SqlCommand, нужно установить Connection
C#
1
cmd.Connection = имя_sqlconnection;
2. Скопируйте сгенерированный cmd.CommandText в какой-нибудь менеджер и попробуйте выполнить, чтобы исключить ошибку в синтаксисе самого sql-запроса
0
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 26
15.02.2019, 19:35  [ТС]
ошибка вот такая: fatal error encountered during command execution
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18250 / 14174 / 5366
Регистрация: 17.03.2014
Сообщений: 28,851
Записей в блоге: 1
15.02.2019, 23:22
Prosto_chelovek, это не весь текст ошибки. Должно быть что-то еще.

Цитата Сообщение от netBool Посмотреть сообщение
Насколько я помню для MySqlCommand, как и для любой SqlCommand, нужно установить Connection
C#
1
cmd.Connection = имя_sqlconnection;
В данном случае это лишнее т.к. используется метод MySqlConnection.CreateCommand
Цитата Сообщение от Prosto_chelovek Посмотреть сообщение
C#
6
            MySqlCommand cmd = conn.CreateCommand();
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,590
Записей в блоге: 1
16.02.2019, 15:41
Prosto_chelovek, а если убрать первый запрос? и какая версия мускула?
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
19.02.2019, 19:23
Цитата Сообщение от OwenGlendower Посмотреть сообщение
В данном случае это лишнее т.к. используется метод MySqlConnection.CreateCommand
Точно. Не заметил)
Цитата Сообщение от Prosto_chelovek Посмотреть сообщение
fatal error encountered during command execution
Как вариант, запрос выполняется слишком долго. Попробуйте задать бОльшее значение для cmd.CommandTimeout
0
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 26
23.02.2019, 11:47  [ТС]
Все. Я частично разобрался из-за чего происходит эта ошибка. Дело было в команде, которая выглядит вот так:
SQL
1
2
3
SELECT * FROM messages;
SET @max_msg_id=(SELECT MAX(msg_id) FROM messages)+1;
INSERT INTO messages(USER, message, msg_id, DATE, TIME) VALUES ('testuser', '',@max_msg_id, '2019-02-23', '11:42:00')
Если я убираю команду set и в команде insert заменяю значение @max_msg_id например на 0, то все выполняется безупречно.
Но мне ведь именно нужно узнать максимальное значение столбца msg_id и прибавить к нему 1! Подскажите пожалуйста, как можно команду изменить?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18250 / 14174 / 5366
Регистрация: 17.03.2014
Сообщений: 28,851
Записей в блоге: 1
23.02.2019, 12:17
Лучший ответ Сообщение было отмечено Prosto_chelovek как решение

Решение

Prosto_chelovek, проще и правильнее сделать колонку msg_id AUTO_INCREMENT. Тогда увеличение будет происходить автоматически и её вообще не нужно будет указывать в запросе.
1
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
23.02.2019, 12:31
использовать INSERT ... SELECT (если логика не допускает "дырок" в нумерации). Если дырки возможны - тогда https://www.cyberforum.ru/ado-... st13350628
0
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 26
05.03.2019, 16:20  [ТС]
OwenGlendower, вы мне жизнь спасли! Огромное спасибо!
0
HF
 Аватар для HF
1307 / 885 / 200
Регистрация: 09.09.2011
Сообщений: 2,598
Записей в блоге: 2
05.03.2019, 16:47
Цитата Сообщение от Prosto_chelovek Посмотреть сообщение
Все. Я частично разобрался из-за чего происходит эта ошибка.
Если я убираю команду set и в команде insert заменяю значение @max_msg_id например на 0, то все выполняется безупречно.
Потому что "нельзя просто так взять и сделать" значение переменной. Для переменной требуется ещё и объявление. То есть пришлось бы ещё строку добавить вначале:

SQL
1
2
3
DECLARE @max_msg_id INT;
SET @max_msg_id=(SELECT MAX(msg_id) FROM messages)+1;
INSERT INTO messages(USER, message, msg_id, DATE, TIME) VALUES ('testuser', '',@max_msg_id, '2019-02-23', '11:42:00')
Но правильный ответ конечно же - AUTO_INCREMENT
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2019, 16:47
Помогаю со студенческими работами здесь

Foreach + cmd.ExecuteNonQuery()
Господа, помогите :scratch: Есть массив, форичем проверяю значение элемента массива и при true выполняется определенный...

При попытке записать в новую строку из textbox ругается на inscmd.ExecuteNonQuery
При попытке записать в новую строку An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll Additional...

Почему cmd ругается на %?
Rem You have to pass path triples: action arg0 arg1. Rem Action could be one of the following values: copy, move, delete. Rem Example:...

Почему cmd при запуска данного .bat файла ругается на %?
Почему cmd при запуске данного .bat файла ругается на %? Rem This .bat file allows you to copy/transfer files from one folder to...

На что ругается программа?
Здрасьте, я тут это, новенький в Java. Написал программу. Ругается. Ну, типично, да? Только вот на что она ругается, и как это исправить? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru