从T-SQL到XML再到c#再到SQL

本文关键字:再到 SQL XML T-SQL | 更新日期: 2023-09-27 18:08:37

我对SQL Server, c#等都是新手。但是我每天都在学习,这很有趣!

我需要从SQL Server中的2个不同数据库中的2个表中获取信息。将其转换为.xml文件,在c#中对其进行冒泡排序,并将其传输回SQL Server中的第三个数据库。

我已经编写了代码将表转换为xml文件,我的问题是,如果我可以将它们转换为一个。xml文件。

我学习的代码为每个表创建一个,所以来自2个数据库的2个表给了我4个。xml文件。

SELECT * 
FROM [Database1].[dbo].[Table_1]
ORDER BY NEWID()
FOR XML AUTO
SELECT *
FROM [Database1].[dbo].[Table_2]
ORDER BY NEWID()
FOR XML AUTO
SELECT *
FROM [Database2].[dbo].[Table_1]
FOR XML AUTO
SELECT *
FROM [Database2].[dbo].[Table_2]
FOR XML AUTO

当它变成一个xml文件后,我必须把它放在c#和冒泡排序到SQL Server的第三个数据库中,正如你所看到的,我至少可以得到我想要的数据,但是当它涉及到c#和冒泡排序它我完全迷路了。我用谷歌搜索了一下,但我还是不太懂,所以我希望你们能用更简单的方式解释一下。

从T-SQL到XML再到c#再到SQL

您的问题的一部分是:我如何将4个XML结果合并为一个:

这是4个不同的调用,两个针对当前Db,两个针对另一个Db:

SELECT TOP 3 * 
FROM INFORMATION_SCHEMA.TABLES
FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('CurrentDb')
SELECT TOP 3 * 
FROM INFORMATION_SCHEMA.COLUMNS
FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('CurrentDb')
SELECT TOP 3 * 
FROM OtherDb.INFORMATION_SCHEMA.TABLES
FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('OtherDb')
SELECT TOP 3 * 
FROM OtherDb.INFORMATION_SCHEMA.COLUMNS
FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('OtherDb')

要将相同的内容合并在一起,您只需将其包装在外部选择中。并注意,TYPE

一些解释:如果你写SELECT * FROM xyz FOR XML RAW,你会得到一个XML返回。这是一个完整而复杂的结构,但仍然是一个标量值。

SELECT (SELECT * FROM xyz FOR XML RAW) AS MyXML,'test' AS OtherColumn FROM SomeTable。您将获得XML,但是作为转义的文本表示形式。您必须指定,TYPE以获得返回的真实XML

SELECT
(
    SELECT TOP 3 * 
    FROM INFORMATION_SCHEMA.TABLES
    FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('CurrentDb'),TYPE
)
,(
    SELECT TOP 3 * 
    FROM INFORMATION_SCHEMA.COLUMNS
    FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('CurrentDb'),TYPE
)
,(
    SELECT TOP 3 * 
    FROM OtherDb.INFORMATION_SCHEMA.TABLES
    FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('OtherDb'),TYPE
)
,(
    SELECT TOP 3 * 
    FROM OtherDb.INFORMATION_SCHEMA.COLUMNS
    FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('OtherDb'),TYPE
)
FOR XML RAW

下面是接下来的步骤1)连接到sql数据库在c# (http://www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C) 2)执行你的sql查询在c# 3)把查询放入数据表。(https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter (v = vs.110) . aspx)