Winforms,一个表单中的多个表未更新到数据库

本文关键字:更新 数据库 表单 Winforms 一个 | 更新日期: 2023-09-27 17:58:00

我已经启动了一个winforms项目,并且正在使用csharp。现在的情况是电子商务商店,我需要一份从供应商那里重新订购产品的表格。所以在表格的一侧,我加载产品,在表格的另一侧,我装载供应商,以及其他一些细节。

到目前为止,我已经设法加载数据并发送订单。然而,我正试图将订单的详细信息保存到另一个表中(我将其命名为supplierOrders

我尝试了以下语法:

datasetTableAdapters.SupplierOrdersTableAdapter ta;
ta = new datasetTableAdapters.SupplierOrdersTableAdapter();
using (ta)
{
    dataset.supplierOrders.AddSupplierOrdersRow(prodId, suppId, quantityReq, note, DateTime.Now);
}

注:dataset是指我使用Add Data Source添加到项目中的数据集。

这里我打算做ta.Update(),但没有这样的方法或类似的submitChanges()等。

使用此代码不会将任何数据插入到表中。你能找出我代码中的错误吗?感谢

Winforms,一个表单中的多个表未更新到数据库

代码本身只在DataSet中插入一行。DataSet是一个断开连接的、与数据存储无关的存储库。无论您在其中做了什么更改,在将其传递给数据适配器之前,都不会将其保存到数据库中。

通常有一个用于数据源的专用数据适配器。例如,如果您的数据库是SqlServer,那么适配器将是SqlDataAdapter。对于ODBC,有OdbcDataAdapter。Oracle、OleDb等也是如此。这些类实现了基本的IDbDataAdapter接口,该接口具有Update方法以及InsertCommandUpdateCommandDeleteCommand属性。Update方法将一个DataSet实例作为参数。在内部,适配器类将调用适当的命令,根据RowState属性更新DataSet中的每个DataRow对象。

一个正确设置的适配器可以很容易地将一个完整的DataSet推到DataBase上,如下所示:

adapter.Update(dataset);

在您的场景中(您在评论中提到您正在使用类型化的数据适配器),您必须做的是:

using (var adapter = new datasetTableAdapters.tablenameTableAdapter())
{
    adapter.Update(dataset);
}

您可以在此处了解有关数据适配器的更多信息。