将关系SQL数据编写为XML

时间:2014-02-24 14:14:04

标签: c# sql-server xml

我在SQL 2010中有两个表之间的主子关系。我想将该数据转换为可以发送给供应商的XML文件。我在Visual Studio 2012中使用C#。

我是否使用强类型数据集?我是否将数据写成平面文件,其中每一行都是连接记录?

TIA - 杰夫。

1 个答案:

答案 0 :(得分:1)

我尝试过解决方案的SQL Server部分。您可以将查询放在存储过程中,然后使用C#代码调用存储过程。这将允许您直接在程序中获取XML。这是SQL Server 2008 R2。

CREATE TABLE parent 
  ( 
     parent_id   INT IDENTITY PRIMARY KEY, 
     parent_name NVARCHAR(100) 
  ); 

CREATE TABLE child 
  ( 
     child_id   INT IDENTITY PRIMARY KEY, 
     parent_id  INT REFERENCES parent(parent_id), 
     child_name NVARCHAR(100) 
  ); 

INSERT INTO parent 
            (parent_name) 
VALUES     ('JOHN'); 

INSERT INTO parent 
            (parent_name) 
VALUES     ('TOM'); 

INSERT INTO parent 
            (parent_name) 
VALUES     ('STACY'); 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (1, 
            'Emily') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (1, 
            'Ryan') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (2, 
            'Krusna') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (2, 
            'Uma') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (2, 
            'Kali') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (3, 
            'Jimbo') 

INSERT INTO child 
            (parent_id, 
             child_name) 
VALUES     (3, 
            'Howard') 

SELECT parent.parent_id   AS "@parentId", 
       parent.parent_name AS "@parentname", 
       (SELECT child_id   AS "@childId", 
               child_name AS "@childName" 
        FROM   child 
        WHERE  child.parent_id = parent.parent_id 
        FOR xml path ('Child'), type) 
FROM   parent 
       INNER JOIN child 
               ON ( parent.parent_id = child.parent_id ) 
FOR xml path ('Parent'), root ('Container'), type