Vb.net 从数据库表更改dataTable中的数据

Vb.net 从数据库表更改dataTable中的数据,vb.net,sql-server-2008,Vb.net,Sql Server 2008,我正在尝试创建一个临时表,该表将保留所做的更改,直到用户单击保存按钮,该按钮将数据表上的所有更改提交到数据库表。对于本例,my temp datatable“lineTable”是向数据库表“NaftaLineTable”提交更改的表。目前,我的代码设置为直接将更改提交到数据库,没有单击“保存”按钮,并且我不确定如何使用它仅对temp datatable进行更改。 示例代码: Dim cmd2 As New SqlCommand("UPDATE NAFTALineTable SET BoxQua

我正在尝试创建一个临时表,该表将保留所做的更改,直到用户单击保存按钮,该按钮将数据表上的所有更改提交到数据库表。对于本例,my temp datatable“lineTable”是向数据库表“NaftaLineTable”提交更改的表。目前,我的代码设置为直接将更改提交到数据库,没有单击“保存”按钮,并且我不确定如何使用它仅对temp datatable进行更改。 示例代码:

Dim cmd2 As New SqlCommand("UPDATE NAFTALineTable SET BoxQuantity = NAFTALineTable.BoxQuantity + (Select COALESCE(sum(ShipmentLineTable.LineBoxes),0) FROM ShipmentLineTable WHERE ShipmentNumber = 1111", con)
If con.State = ConnectionState.Closed Then con.Open()
              cmd2.ExecuteNonQuery()
               con.Close() 
我想在我的temp datatable而不是数据库表上执行此update命令。我试着研究,但没有找到我想要的。如果您需要了解我的查询所做的工作,它将从NAFTalineTable获取箱子数量,并将其更新为等于ShipmentLineTable中箱子数量+NAFTalineTable中箱子数量,其中ShipmentNumber为1111

psuedocode对于我想要的,我知道语法是错误的,这就是我不明白如何做的:

Dim cmd2 As New SqlCommand("Select COALESCE(sum(ShipmentLineTable.LineBoxes),0) FROM ShipmentLineTable WHERE ShipmentNumber = 1111", con)
 If con.State = ConnectionState.Closed Then con.Open()
          lineTable.Column("BoxQuantity").("Shipment"=1111) += cmd2.ExecuteNonQuery()
          con.Close() 

看起来强类型dataset/datatable正是您想要的。你的第一句话就是对它的描述。@PeterG你说的强类型是什么意思?手工编码?因为我是这样做的,如果这是你的意思,那么你没有彻底阅读我的问题。在问题的最后,我试图找出如何完成我尝试的“伪代码”部分。我指的是ADO.Net强类型数据集和相关组件-datatable、tableadapter等。请记住,我不知道您想要实现什么;只是你的第一句话描述了这些组件是如何工作的(附带条件是它们通常是针对每个用户的,而不是数据库中的临时表,据我所知,这可能是你的目标中的一个关键元素。)是的,谢谢,good catch@puropoix,我并不是想暗示每周键入的变体不会起作用;我在想,OP可能会发现强类型的,包括设计器等更为熟悉,因为它更像SSMS表设计器。您还可以让用户在将更改发送到db之前重新检查这些更改。