我在SQL 2010中有两个表之间的主子关系。我想将该数据转换为可以发送给供应商的XML文件。我在Visual Studio 2012中使用C#。
我是否使用强类型数据集?我是否将数据写成平面文件,其中每一行都是连接记录?
TIA - 杰夫。
答案 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