簡體   English   中英

從T-SQL到XML到C#回到SQL

[英]T-SQL to XML to C# Back to SQL

我對SQL Server,C#等非常陌生。 但是我每天都在學習,這很有趣!

我需要從SQL Server 2個不同數據庫中的2個表中獲取信息。 將其轉換為.xml文件,然后用C#對其進行冒泡排序,然后將其傳輸回SQL Server中的第3個數據庫中。

我已經編寫了將表轉換為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的第3個數據庫中,如您所見,我至少可以獲取所需的數據,但是當涉及C#並進行冒泡排序時,完全迷失了。 我已經在Google周圍搜索,但是我很難理解,所以我希望你們可以嘗試以更簡單的方式進行解釋。

以下是后續步驟1)在c#中連接到sql數據庫( http://www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C)2 )執行您的sql查詢在c#中3)將查詢放入DataTable。( https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter ( v=vs.110 ) .aspx

您的問題的一部分是:如何將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編寫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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM