【发布时间】:2010-12-10 12:06:23
【问题描述】:
我想使用 SqlDataAdapter 在数据库中插入一行。我在 CustomerOrders 数据库中有 2 个表(Custormers 和 Orders),并且有超过一千条记录。我想创建一个 GUI(文本框),用于将新客户和订单添加到数据库中各自的表中。
- 我该怎么做?
我猜通常遵循的方法是
dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);
现在从文本框中获取值(或使用 DataBinding)将新行添加到数据集中并调用
da.Update(dataSet);
但问题是我为什么要首先使用 da.Fill(dataSet) 将所有其他记录提取到数据集中?我只想添加一条新记录。
为此,我正在做的是在 DataSet 中创建数据库的模式。像这样:
DataSet customerOrders = new DataSet("CustomerOrders");
DataTable customers = customerOrders.Tables.Add("Customers");
DataTable orders = customerOrders.Tables.Add("Orders");
customers.Columns.Add("CustomerID", Type.GetType("System.Int32"));
customers.Columns.Add("FirstName", Type.GetType("System.String"));
customers.Columns.Add("LastName", Type.GetType("System.String"));
customers.Columns.Add("Phone", Type.GetType("System.String"));
customers.Columns.Add("Email", Type.GetType("System.String"));
orders.Columns.Add("CustomerID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderAmount", Type.GetType("System.Double"));
orders.Columns.Add("OrderDate", Type.GetType("System.DateTime"));
customerOrders.Relations.Add("Cust_Order_Rel", customerOrders.Tables["Customers"].Columns["CustomerID"], customerOrders.Tables["Orders"].Columns["CustomerID"]);
我使用 DataBinding 将这些列绑定到相应的文本框。 现在我很困惑!接下来我该怎么办?如何使用插入命令?因为我没有给出任何 dataAdapter.SelectCommand 所以我猜 dataAdapter.Update() 不会工作。请提出正确的方法。
【问题讨论】:
标签: c# mysql sql-server ado.net