sql表到xml

时间:2016-08-12 10:10:37

标签: c# sql xml linq azure

我在sql数据库中有几个表,其中一个包含其他人的名字,但不是全部。我需要加载表的名称(从那个特殊的名称)作为列表(xdocument),并使用foreach和一个简单的查询将所有这些转换为一个xml文件。数据库和应用程序位于相同的azure帐户中。

我的桌子很少

    CREATE TABLE [dbo].[table_name]
   (
        [P_ID]  INT            NOT NULL,
        [name] NVARCHAR (255) NOT NULL,
        PRIMARY KEY CLUSTERED ([P_ID] ASC)
    );

和只包含varchar的

table_name1
table_name2
table_name4

我使用那个简单的查询

    SELECT
    P_ID "Table_name2/@id",
    nazwa "Table_name2"
FROM Table_name2
FOR XML PATH('');

并获得结果,但仅适用于一个表

东西 但我希望在一个xml中使用" file_converting_tables_to_xml.cs"在我的应用程序

<spinery>   
 <spiner title="Table_name1">
  <wart id="1">black</wart>
</spiner>
 <spiner title="Table_name3">
  <wart id="1">white</wart>
</spiner>

或类似的东西

我发现的一切都不适合我,

所以请帮忙

1 个答案:

答案 0 :(得分:0)

如果这是SQL Server,您可以尝试这样做:

- 创建两个表

CREATE TABLE [dbo].Table_name1
(
    [P_ID]  INT            NOT NULL,
    [name] NVARCHAR (255) NOT NULL,
    PRIMARY KEY CLUSTERED ([P_ID] ASC)
);
CREATE TABLE [dbo].Table_name2
(
    [P_ID]  INT            NOT NULL,
    [name] NVARCHAR (255) NOT NULL,
    PRIMARY KEY CLUSTERED ([P_ID] ASC)
);
GO

- 填写样本数据

INSERT INTO dbo.Table_name1 VALUES(1,'black');
INSERT INTO dbo.Table_name2 VALUES(1,'white');
GO

- 使用UNION ALL合并结果和FOR XML PATH以创建正确的名称

SELECT 'Table_name1' AS [@title]
      ,P_ID [wart/@id]
      ,name [wart]
FROM Table_name1
UNION ALL
SELECT 'Table_name2' AS [@title]
      ,P_ID [wart/@id]
      ,name [wart]
FROM Table_name2
FOR XML PATH('spiner'),ROOT('spinery');

- 清理(如果有真实数据,请小心!)

GO
--DROP TABLE dbo.Table_name1;
--DROP TABLE dbo.Table_name2;