C# 将每个xml节点插入sql server 2008表

C# 将每个xml节点插入sql server 2008表,c#,sql-server,xml,tsql,C#,Sql Server,Xml,Tsql,我使用的xml如下所示: <Production> <AIS_ID>ais150Dz</AIS_ID> <WorkedOn>12-12-2017</WorkedOn> <Status>Completed</Status> </Production> 我找到了这样做的建议,但在插入数据时,我必须手动声明列名,例如“/Production/AIS_ID”。我想使它成为动态的,这与XML中有多

我使用的xml如下所示:

<Production>
  <AIS_ID>ais150Dz</AIS_ID>
  <WorkedOn>12-12-2017</WorkedOn>
  <Status>Completed</Status>
</Production>
我找到了这样做的建议,但在插入数据时,我必须手动声明列名,例如“/Production/AIS_ID”。我想使它成为动态的,这与XML中有多少节点无关。原因是,返回的xml不是固定的

请提供任何建议。

试试这个:

DECLARE @XML XML;

SET @XML = '<Production>
  <AIS_ID>ais150Dz</AIS_ID>
  <WorkedOn>12-12-2017</WorkedOn>
  <Status>Completed</Status>
</Production>'

SELECT  T.c.value('local-name(.)', 'VARCHAR(50)')
       ,T.c.value('(./node())[1]', 'VARCHAR(100)')
FROM @XML.nodes('Production/*')T(c);
DECLARE@XML;
SET@XML=

首先为什么要这样做?SQL Server有一个
xml
类型。我以字典的形式获取了数据。要在数据库中插入所有值,我必须在C#中使用for循环。为了避免这种情况,我将字典转换为xml字符串,并将其传递给存储过程。现在我想插入每个节点及其值,如图所示。您可以在VS项目中使用生成数据上下文,然后获取数据表并保存到数据库中。datacontext自动创建c#类和SQL表之间的类和映射接口。
DECLARE @XML XML;

SET @XML = '<Production>
  <AIS_ID>ais150Dz</AIS_ID>
  <WorkedOn>12-12-2017</WorkedOn>
  <Status>Completed</Status>
</Production>'

SELECT  T.c.value('local-name(.)', 'VARCHAR(50)')
       ,T.c.value('(./node())[1]', 'VARCHAR(100)')
FROM @XML.nodes('Production/*')T(c);