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()
等。
使用此代码不会将任何数据插入到表中。你能找出我代码中的错误吗?感谢
代码本身只在DataSet
中插入一行。DataSet
是一个断开连接的、与数据存储无关的存储库。无论您在其中做了什么更改,在将其传递给数据适配器之前,都不会将其保存到数据库中。
通常有一个用于数据源的专用数据适配器。例如,如果您的数据库是SqlServer,那么适配器将是SqlDataAdapter
。对于ODBC,有OdbcDataAdapter
。Oracle、OleDb等也是如此。这些类实现了基本的IDbDataAdapter
接口,该接口具有Update
方法以及InsertCommand
、UpdateCommand
和DeleteCommand
属性。Update
方法将一个DataSet
实例作为参数。在内部,适配器类将调用适当的命令,根据RowState
属性更新DataSet
中的每个DataRow
对象。
一个正确设置的适配器可以很容易地将一个完整的DataSet
推到DataBase
上,如下所示:
adapter.Update(dataset);
在您的场景中(您在评论中提到您正在使用类型化的数据适配器),您必须做的是:
using (var adapter = new datasetTableAdapters.tablenameTableAdapter())
{
adapter.Update(dataset);
}
您可以在此处了解有关数据适配器的更多信息。