gpt4 book ai didi

c# - 使用 SqlDataAdapter 插入一行

转载 作者:IT老高 更新时间:2023-10-28 23:47:37 27 4
gpt4 key购买 nike

我想使用 SqlDataAdapter 向数据库中插入一行。我在 CustomerOrders 数据库中有 2 个表(Custormers 和 Orders),并且有超过一千条记录。我想创建一个 GUI(文本框),用于将新客户和订单添加到数据库中各自的表中。

  • 我应该怎么做?

我猜通常遵循的方法是

dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);

现在从文本框中获取值(或使用数据绑定(bind))将新行添加到数据集中并调用

  da.Update(dataSet);

但问题是为什么我应该首先使用 da.Fill(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 将这些列绑定(bind)到各自的文本框。现在我很困惑!接下来我该怎么办?如何使用插入命令?因为我没有提供任何 dataAdapter.SelectCommand,所以我猜 dataAdapter.Update() 不会工作。请提出正确的方法。

最佳答案

使用“0 = 1”过滤器设置选择命令并使用 SqlCommandBuilder以便自动为您生成插入命令。

var sqlQuery = "select * from Customers where 0 = 1";
dataAdapter = new SqlDataAdapter(sqlQuery, conn);
dataSet = new DataSet();
dataAdapter.Fill(dataSet);

var newRow = dataSet.Tables["Customers"].NewRow();
newRow["CustomerID"] = 55;
dataSet.Tables["Customers"].Rows.Add(newRow);

new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(dataSet);

关于c# - 使用 SqlDataAdapter 插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com