2016-09-25 48 views
0

我很新,SQL Server,C#等。但我每天都在學習,這很有趣!T-SQL到XML到C#返回到SQL

我需要從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#和泡沫排序它,我完全失去了。我一直在搜索,但我很難理解,所以我希望你們可以用更簡單的方式嘗試和解釋。

+0

嗨馬里克,歡迎來到SO。請允許我提一個提示:在這裏你有兩個問題:這是一個原則,在一個問題中保留*一個問題*。這使得跟蹤用戶更容易找到他們問題的答案。 – Shnugo

回答

0

一個部分是:如何做我得到4個XML結果轉換成一個:

這是4個不同的電話,2人反對當前分貝,兩名反對另一個數據庫:

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 
+0

你能解釋更多嗎?我測試了它,並且做了我想要的,但我不完全明白它爲什麼仍然可以工作。 – Marik

+0

@Marik,你好,我添加了一些解釋...現在清除? – Shnugo

+0

是的,謝謝! – Marik