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

时间:2014-04-11 16:56:00

标签: c# .net winforms ado.net multiple-tables

我已经启动了一个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()等。

使用此代码不会在表中插入任何数据。你能发现我代码中的任何错误吗?感谢

1 个答案:

答案 0 :(得分:1)

您自己的代码只会在DataSet中插入一行。 DataSet已断开连接,数据存储区域无关的存储库。无论您在其中做出哪些更改,在将其传递给数据适配器之前,它都不会保存到数据库中。

通常有数据源的专用数据适配器。例如,如果您的数据库是Sql Server,那么适配器将是SqlDataAdapter。对于ODBC,有OdbcDataAdapter。 Oracle,OleDb等也是如此......这些类实现了基本IDbDataAdapter接口,该接口具有Update方法以及InsertCommandUpdateCommand和{{1} }属性。 DeleteCommand方法将Update实例作为参数。在内部,适配器类将调用相应的命令来更新DataSet中的每个DataRow对象,具体取决于其DataSet属性。

正确设置的适配器可以像这样轻松地将完整的RowState推送到DataSet

DataBase

在您的方案中(您在评论中提到您正在使用类型化数据适配器),您需要做的是:

adapter.Update(dataset);

您可以详细了解数据适配器here