hers2keep Ответов: 2

Сообщение об ошибке Cmd.executenonquery()


У меня есть следующий код на кнопке обновления в WinForms VS 2017.
private void btnEdit_Click(object sender, EventArgs e)
        {
            if (txtOrder.Text != "")
            {
                cmd = new SqlCommand("UPDATE AER_INBOUND_PLASTICS SET [STATUS]=@status,[DATE]=@date,[SOPO_NO]=@order,[SHIPPER]=@shipper,[VENDOR]=@vendor,[WAREHOUSE]=@warehouse,[COMMENTS]=@comments,[PURCH_PART_CODE]=@part1,[PURCH_PART_CODE_2]=@part2,GETDATE(),[MODIFIED_BY]=@user WHERE ID=@id", con);
                con.Open();
                cmd.Parameters.AddWithValue("@id", ID);
                cmd.Parameters.AddWithValue("@status", comboBoxStatus.SelectedItem.ToString());
                cmd.Parameters.AddWithValue("@date", txtLoadtime.Text);
                cmd.Parameters.AddWithValue("@order", txtOrder.Text);
                cmd.Parameters.AddWithValue("@shipper", txtShipper.Text);
                cmd.Parameters.AddWithValue("@vendor", txtVendor.Text);
                cmd.Parameters.AddWithValue("@warehouse", comboBoxWarehouse.SelectedItem.ToString());
                cmd.Parameters.AddWithValue("@comments", txtComments.Text);
                cmd.Parameters.AddWithValue("@part1", txtPart1.Text);
                cmd.Parameters.AddWithValue("@part2", txtPart2.Text);
                cmd.Parameters.AddWithValue("@user", Environment.UserName);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Record Updated Successfully.");
                con.Close();
                dataGridView1.Refresh();
                ClearData();
            }
            else
            {
                MessageBox.Show("Please Select Record to Update.");
            }
        }
Форма загружается правильно, и текстовые поля заполняются правильно из DataGridView SelectedRow. Когда я изменяю текстовые поля и нажимаю на кнопку Обновить, я получаю следующую ошибку в cmd.ExecuteNonQuery() строка: дополнительная информация: неверный синтаксис рядом с '('.

Я нигде не вижу пропущенных скобок. Кажется, я не могу отследить, где находится ошибка в процессе обновления.

Что я уже пробовал:

Я просмотрел код и действительно нашел квадратную скобку, отсутствующую в операторе SqlCommand, но исправление этого не решило проблему. Я следую инструкциям на этом сайте (http://www.c-sharpcorner.com/uploadfile/1e050f/insert-update-and-delete-record-in-datagridview-c-sharp/)

2 Ответов

Рейтинг:
1

CHill60

У вас есть случайный GETDATE() в вашем коде, который вы не назначаете ни одному столбцу.

Похоже, вы скопировали инструкцию UPDATE из более ранней инструкции INSERT и забыли вставить имя столбца


Maciej Los

Ястребиный глаз!

CHill60

Привет, Мацей! Это было время, так как ты меня так называл :-)

Maciej Los

О, да! Ты заслужила такой комплимент, потому что ты очень проницательный человек, Кэролайн.
Кстати: всего наилучшего в женский день!

CHill60

Большое спасибо! Я надела пурпур, потому что, по-видимому, это было то, что нужно было сделать :-)

Maciej Los

;)

Рейтинг:
0

hers2keep

О, ради всего святого!! В таблице есть поле с именем MODIFIED, которое является датой и временем изменения записи. Я вставил [MODIFIED]=GETDATE (), и он отлично работает! Спасибо!!


Maciej Los

Это не ответ. Пожалуйста, удалите его, чтобы избежать голосования вниз.
Чтобы сказать "спасибо", используйте виджет "есть вопрос или комментарий" под решением/ответом.

CHill60

Мое удовольствие - не стесняйтесь принять решение. Кстати, избегайте размещения комментариев в качестве решений - там есть "есть вопрос или комментарий?" ссылка рядом с постами и ссылка "ответить" рядом с комментариями. Я предлагаю вам удалить это прежде чем вы получите слишком много downvotes :-)