Проблема с обновлением данных в SQL из DataGridView в C#

#c# #sql-server

#c# #sql-сервер

Вопрос:

У меня есть две таблицы в SQL Server, и у меня есть форма purchaseinvoiceform . он использует DataGridView для сохранения нескольких продуктов.

В режиме сохранения это работает хорошо. Но когда я обновляю любой порядок, он обновляет только первую таблицу, которая есть purchaseinvoice , но не обновляет вторую таблицу purchaseinvoicedetails . purchaseinvoicedetails сохраняет несколько продуктов по их ordernumber . Если у меня есть один элемент в datagridview , он успешно сохраняется. Теперь, когда я обновляю этот элемент, никаких проблем не возникает. Но когда я добавляю еще один элемент в этом порядке и пытаюсь его обновить, другие элементы не сохраняются.

Запрос на обновление:

 SaveOrUpdateProductDetailsOnly("UPDATE [dbo].[PurchaseInvoiceDetails] SET [ProductCode] = @ProductCode ,[ProductName] = @ProductName ,[Box] = @Box,[Quantity] = @Quantity ,[Price] = @Price,[DiscountInPercent] = @DiscountInPercent ,[DiscountAmount] = @DiscountAmount,[Amount] = @Amount WHERE PurchaseInvoiceNo = @PurchaseInvoiceNo");
  

Вот код

Комментарии:

1. вы получили какую-либо ошибку? можете ли вы проверить, какой sql выполняется из sql profiler?

2. cmd.ExecuteNonQuery() возвращает целое число с количеством измененных строк. Какое значение вы получаете? Обновление изменит только значения, которые уже есть в базе данных. Если обновление возвращает ноль, это означает, что первичного ключа нет в базе данных, и вам нужно использовать Insert вместо Update. Если вы используете Insert и получаете возвращаемое значение, равное нулю, тогда вам нужно использовать Update.

3. Я использую update для обновления значения, но я не смог добавить новые значения во время обновления.

4. Как вы думаете, почему одна инструкция update обновит несколько таблиц? И я могу сказать, что опубликованный вами код не обновит таблицу PurchaseInvoice. Ваше обновление ссылается на PurchaseInvoiceDetails.

5. он обновляет единственную таблицу ProductDetails. Но если у меня есть 2 элемента в таком порядке, я не могу добавить третий во время обновления.

Ответ №1:

Как насчет этого?

 private void btnUpdate_Click(object sender, EventArgs e)
{

    using (SqlConnection con = new SqlConnection("Server=your_server_name;Database=your_database_name;Trusted_Connection=True;"))
    {

        using (SqlCommand cmd = new SqlCommand("SELECT * FROM Courses", con))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                {
                    SqlCommandBuilder sqlcmd = new SqlCommandBuilder(da);
                    DataSet ds = new System.Data.DataSet(); // remove this line
                    da.Update(this.ds, "Courses");
                }
            }
        }
    }
}