C# 将记录的所有SQL Server列值作为唯一变量存储在C中

C# 将记录的所有SQL Server列值作为唯一变量存储在C中,c#,sql-server,C#,Sql Server,我正在用C编写一个程序,它将从暂存表中获取数据,然后将相同的数据插入SQL Server数据库中各自的新位置。程序将按顺序执行以下步骤: 从暂存表的第一行中选择列 将每列存储为唯一变量 将数据插入数据库中新的相应位置。每个值都将进入数据库中的多个不同表,并且这些值在多个表之间重复 移动到下一个记录 从步骤1开始重复,直到处理完所有记录 那么,有没有一种方法可以遍历整个记录集,将列中的每个结果存储为唯一变量,而不必为要存储的每个值编写单独的查询?共有51列,它们都必须放在某个地方,我不认为用自定义

我正在用C编写一个程序,它将从暂存表中获取数据,然后将相同的数据插入SQL Server数据库中各自的新位置。程序将按顺序执行以下步骤:

从暂存表的第一行中选择列 将每列存储为唯一变量 将数据插入数据库中新的相应位置。每个值都将进入数据库中的多个不同表,并且这些值在多个表之间重复 移动到下一个记录 从步骤1开始重复,直到处理完所有记录 那么,有没有一种方法可以遍历整个记录集,将列中的每个结果存储为唯一变量,而不必为要存储的每个值编写单独的查询?共有51列,它们都必须放在某个地方,我不认为用自定义查询对51个变量进行硬编码会非常有效


我曾想过用多维数组来实现这一点,但那只是一个字符串和一大堆值。任何建议都将不胜感激。

尽管您可以通过.NET应用程序实现这一点,但使用SQL语句确实更容易实现。SQL具有在表之间移动数据的良好语法:

INSERT INTO [Destination] ([Columns,])
SELECT [Columns,]
FROM [Source]

如果要在数据库之间移动数据,只需将一个数据库链接到另一个数据库,然后运行查询。如果您使用的是SQLServerManagementStudio,则可以按照以下步骤设置链接服务器。否则,您可以使用该过程注册链接服务器。

您可以创建一个类,该类包含表中每列的属性,并使用微型ORM(如Dapper)从数据库中填充这些类的实例列表。然后可以遍历该列表,并对其他表进行插入

您甚至可以为单个插入创建其他类,并使用AutoMapper从源类创建这些插入的实例


但是。。。这对于您试图实现的目标来说可能是过火了。

为什么要为此编写程序?Sql Server Integration Services正是为了实现此目的而设计的。只需直接选择即可实现此目的。因此,我们可以为最终用户自动化此过程谢谢。我熟悉INSERT SELECT FROM语句,以前也使用过它们。然而,在本例中,我们正在清理一个庞大的联系信息数据库。这将是一个持续的过程,该计划背后的想法将是使任务自动化,以便我们的最终用户可以通过自定义intranet门户输入新信息,而无需每次都要求IT部门进行数据库更新。是否存在阻止您从客户机应用程序调用此T-SQL语句的情况否则执行迭代方法?不,一点也不。我的老板让我这样做,但现在我想这可能不需要了。只要循环移动到下一条记录,这就不重要了……也许我的做法是错误的。如果你的老板可以指出有一些限制使这种做法不可接受,那么将这些限制添加到你的问题中,你就可以得到更多的答案。