如何使用匹配键同时插入客户和订单信息

ntjbwcob  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(402)

我的表格1
mycode(威瑟罗)
我的表格2
假设为了简单起见我有两个表(真实的数据库有更多的表,如图所示);两个主键都是自动递增的。不允许空值,外键允许空值。我需要理解一个基本概念:
一个表称为customers,包含以下列:
客户id(pk)
名称
电话
第二个表称为订单:
订单id(pk)
客户id(fk)
产品

有一个新客户的订单,您必须输入客户信息(姓名、电话)和订单信息(产品、数量)。我在表单和按钮上为这些做了文本框。
如何将此信息插入到正确的表中,同时确保完成后键匹配?我想表单添加客户信息和领带订单到他们。
我尝试过表适配器、观看youtube、编写sql查询,甚至在serverexplorer中手动输入数据。我可以很容易地检索数据,但插入混淆我,因为键和自动递增。我想我缺少一个基本的概念。似乎教程几乎从不显示将数据插入多个表?在表适配器查询中是否需要触发器或作用域标识?

x9ybnkn6

x9ybnkn61#

数据集表示数据库表;用数据填充数据集的表,然后按正确的顺序调用update(必须先将内容插入order和products,然后才能插入orderitems)
如果您在vs的现代版本中执行此操作,那么您的数据集还将生成tableadaptermanager,该设备知道集合中的所有TableAdapter以及它们应用于实现正确功能的顺序,因此执行插入操作就像调用 tableAdapterManager.UpdateAll() ,tableadaptermanager是tableadaptermanager类的示例
要真正回答您的问题,需要向您传递大量的信息,而且我看不到代码,因此我无法告诉您到目前为止是如何安排的,但实际上,您要么需要订单和产品表中已经有数据(从数据库下载),要么需要在订单创建过程中插入行。按理说,我会假设这些产品是已知的。我也不知道你用的是vb还是c#-我会用vb写,因为c#程序员不太可能抱怨必须在脑子里翻译vb,反之亦然:

Dim prodToAdd = ds.Products.Find(1234) 'gets a row from the product table with id 1234

   'create an order
   Dim order = ds.Orders.NewOrdersRow()
   order.Address = "Whatever" 'set properties of the order
   ds.Orders.Add(order) 'put the new row in the local datatable, not saved to db yet

   'put a product on an order
   ds.OrderItems.AddOrderItemsRow(prodToAdd, order, ...) 'directly add an orderitem row linking the Product and the Order

   'save to db
   tableAdapterManager.UpdateAll(ds)

如果没有管理器,则必须自己按正确的顺序将行插入数据库:

ordersTableAdapter.Update(ds.Orders) 'yes, the method is called update, but it runs an INSERT sql for rows in an Added rowstate

orderItemsTableAdater.Update(ds.OrderItems)

相关问题