我已经启动了一个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()
等。
使用此代码不会在表中插入任何数据。你能发现我代码中的任何错误吗?感谢
答案 0 :(得分:1)
您自己的代码只会在DataSet
中插入一行。 DataSet
是已断开连接,数据存储区域无关的存储库。无论您在其中做出哪些更改,在将其传递给数据适配器之前,它都不会保存到数据库中。
通常有数据源的专用数据适配器。例如,如果您的数据库是Sql Server,那么适配器将是SqlDataAdapter
。对于ODBC,有OdbcDataAdapter
。 Oracle,OleDb等也是如此......这些类实现了基本IDbDataAdapter
接口,该接口具有Update
方法以及InsertCommand
,UpdateCommand
和{{1} }属性。 DeleteCommand
方法将Update
实例作为参数。在内部,适配器类将调用相应的命令来更新DataSet
中的每个DataRow
对象,具体取决于其DataSet
属性。
正确设置的适配器可以像这样轻松地将完整的RowState
推送到DataSet
:
DataBase
在您的方案中(您在评论中提到您正在使用类型化数据适配器),您需要做的是:
adapter.Update(dataset);
您可以详细了解数据适配器here。