Member 13765884 Ответов: 1

Как обновить базу данных с помощью UPDATE peramatized querys


Если содержимое метки совпадает с содержимым ячейки в столбце 'column1' (столбец идентификатора заказа) базы данных (аналогично концепции формы входа в систему), измените значение ячейки 4 (статус заказа) в этой конкретной строке (и только в этой строке) на конкретное значение в текстовом поле

Однако когда я запускаю программу и проверяю базу данных, чтобы увидеть, что текст в ячейке местоположения был обновлен, это не так . Я проверил, и я не уверен, где он находится.


if (result == DialogResult.Yes)
           {
               OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Customer Orders] WHERE [OrderID] = @orderID", MAcon); //'"+orderID+"'", MAcon);
               da.SelectCommand.Parameters.AddWithValue("@OrderID", orderID); //.Text
               DataTable dtbl = new DataTable();
               da.Fill(dtbl);

               if (dtbl.Rows.Count == 1)
               {
                   OleDbCommand cmd = new OleDbCommand("UPDATE [Customer Orders] SET OrderStatus= @OrderStatus WHERE OrderID = @orderId", MAcon);

                   MAcon.Open();
                   cmd.Parameters.AddWithValue("@OrderID", orderID);
                   cmd.Parameters.AddWithValue("@OrderStatus", Location.Text);
                   cmd.ExecuteNonQuery();
                   MAcon.Close();

                   DialogResult finish = MessageBox.Show("Production has begun", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               }
           }
       }


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

if (result == DialogResult.Yes)
           {
               OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Customer Orders] WHERE [OrderID] = @orderID", MAcon); //'"+orderID+"'", MAcon);
               da.SelectCommand.Parameters.AddWithValue("@OrderID", orderID); //.Text
               DataTable dtbl = new DataTable();
               da.Fill(dtbl);

               if (dtbl.Rows.Count == 1)
               {
                   OleDbCommand cmd = new OleDbCommand("UPDATE [Customer Orders] SET OrderStatus= @OrderStatus WHERE OrderID = @orderId", MAcon);

                   MAcon.Open();
                   cmd.Parameters.AddWithValue("@OrderID", orderID);
                   cmd.Parameters.AddWithValue("@OrderStatus", Location.Text);
                   cmd.ExecuteNonQuery();
                   MAcon.Close();

                   DialogResult finish = MessageBox.Show("Production has begun", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               }
           }
       }

F-ES Sitecore

Пожалуйста, научитесь задавать правильные вопросы, помните, что у нас нет доступа к вашим данным, мы не знаем, какие входные данные находятся в вашей форме, если вы сбрасываете код, который полагается на ваши данные и ваши входные данные, мы не можем сказать вам, почему он не работает. Научитесь использовать отладчик и пошагово выполнять свой код, затем научитесь давать подробную информацию о том, что происходит, а что нет, и тогда, возможно, кто-то сможет лучше угадать, в чем может быть проблема.

Richard MacCutchan

Почему вы игнорируете возвращаемое значение из ExecuteNonQuery Это скажет вам, сработало ли обновление или нет.

1 Ответов

Рейтинг:
2

OriginalGriff

Мы не можем решить эту проблему за вас - это зависит от слишком многих вещей, ни к одной из которых у нас нет доступа: например, к вашей базе данных и значению orderID.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поставьте точку останова на линии

OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Customer Orders] WHERE [OrderID] = @orderID", MAcon);
И запустите свой код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.
Начните с вопроса "каково значение в orderID?", а затем выясните, что возвращает запрос SELECT.
Делает ли это if получится? Если нет, то почему? Если да, то что же находится в локации.Текст, а что находится в вашей базе данных для этого значения OrderID?

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!