在插入到sql server之前,先将vb.net datatable与sql server表连接起来,然后将结果插入到sql server表中

u0njafvf  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(627)

我想将数据从vb.net数据表传输到sql server。
但是,在将数据传输到sql server主表之前,我希望使用另一个sql server表(如左联接)中的现有数据处理此数据,然后将该结果作为实际数据插入到sql server主表中。
vb.net数据表大约有2000行。
我想在vb.net中用insert sql语句对每条记录执行for循环,但有两个缺点。
它将记录插入到SQLServer表中,而不需要连接进程和
对于2000+条记录的“for循环”在客户端应用程序上不太好。
为了避免“for循环”,可以选择 SqlBulkCopy ,但它再次将vb.net datatable插入到sql server中,而没有所需的数据处理。
再次说明要求:我想将vb.net datatable与sql server中的某个表连接起来,结果需要插入到sql server的主表中。
请引导。

blmhpbnm

blmhpbnm1#

可以将数据表作为表值参数传递给SQLServer。您可以在这里找到更多信息:
https://khalidabuhakmeh.com/passing-table-valued-parameters-from-dotnet-to-sql-server

cwdobuhd

cwdobuhd2#

本诺杜尔说了些什么,但更详细一点:
在vb.net中有一组数据(datatable)。您希望在基于存储在sql表中的第二组数据对数据集进行修改之后,将数据集中的数据加载到sql中。基于此,推测:
您不想将第二组数据加载到vb.net中
您不希望更改第一个数据集,因为它存储在vb.net中
一种方法是将sql中的第二组数据临时加载到vb.net中的第二组数据中,用数据的修改版本构建临时的第三组数据,然后将其加载到sql中。听起来我工作太多了。更以sql为中心的方法是:
在sql中创建存储过程
该过程有一个参数,其中该参数是表值参数[tvp]
(这要求在创建过程之前先创建tvp。这以及如何创建存储过程都不在本解答的范围之内。)
从vb.net调用该过程,通过tvp参数传入第一组数据
在这个过程中,您现在在tvp中有了第一组数据,第二组数据在表中随时可用
然后你可以写一个 INSERT... SELECT... 语句,该语句基于tvp和第二个表之间的联接将行插入到目标表中。

相关问题