首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SqlDataAdapter插入行

使用SqlDataAdapter插入行
EN

Stack Overflow用户
提问于 2009-10-27 14:06:41
回答 3查看 70.9K关注 0票数 27

我想使用SqlDataAdapter将一行插入数据库。我在CustomerOrders数据库中有两个表(Custormers和Orders),有上千条记录。我想要创建一个GUI (TextBoxes),以便将新的客户和订单添加到数据库中到它们各自的表中。

  • 我怎么发动汽车呢?

我想通常遵循的方法是

代码语言:javascript
复制
dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);

现在从文本框(或使用DataBinding)中获取值,将新行添加到dataSet中并调用

代码语言:javascript
复制
  da.Update(dataSet);

但问题是,为什么首先我要使用dataSet (da.Fill,dataSet)将所有其他记录提取到dataSet中?我只想再加一张新唱片。

为此,我要做的是在DataSet中创建数据库的架构。就像这样:

代码语言:javascript
复制
  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将这些列绑定到相应的文本框。现在我糊涂了!我接下来该怎么办?如何使用Insert命令?因为我没有给出任何dataAdapter.SelectCommand,所以我想dataAdapter.Update()不会起作用。请提出正确的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-27 14:17:47

使用"0 = 1“筛选器设置select命令,并使用SqlCommandBuilder,以便自动为您生成insert命令。

代码语言:javascript
复制
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);
票数 46
EN

Stack Overflow用户

发布于 2009-10-27 14:11:19

您可以用一个空集填充dataSet,例如:

代码语言:javascript
复制
da = new SqlDataAdapter ("SELECT * FROM Customers WHERE id = -1", conn);
dataSet = new DataSet();
da.Fill(dataSet);

然后添加行并调用update。

不过,对于这种情况,最好不要使用SqlDataAdapter。相反,直接使用SqlCommand对象进行插入。(更好的方法是使用LINQ或任何其他ORM)

票数 7
EN

Stack Overflow用户

发布于 2012-11-03 07:29:57

代码语言:javascript
复制
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=test;Integrated Security=True");
SqlDataAdapter da=new SqlDataAdapter("Insert Into Employee values("+textBox1.Text+",'"+textBox2.Text+"','"+textBox3.Text+"',"+textBox4.Text+")",con);
DataSet ds = new DataSet();
da.Fill(ds);

我得做第一次。你可以试试。效果很好。

票数 -6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1631054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档