2014-02-24 20 views
0

我在SQL 2010中的兩個表之間擁有主子關係。我想將這些數據轉換爲可發送給供應商的XML文件。我在C#中使用Visual Studio 2012.將關係型SQL數據編寫爲XML

我使用強類型數據集嗎?我是否將數據作爲平面文件寫入,每行都是連接記錄?

TIA - Jeff。

+0

沒有SQL 2010. SQL Server具有一個['FOR XML'](http://technet.microsoft.com/en-us/library/ms178107.aspx)功能,可以在其中構建XML對你來說,如果這會有所幫助的話。 –

+0

您可以查看FOR XML() http://technet.microsoft.com/en-us/library/ms178107.aspx –

回答

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