2010-06-30 39 views
1

我想動態地寫一些web服務的XML。我最近已經展示瞭如何爲我的SQL查詢使用FOR XML AUTO子句,但我不確定如果我正在正確編寫查詢並且在此之上,我不確定如何返回文檔值返回值自動模式XML

using (SqlConnection oCn = new SqlConnection()) 
{ 
    oCn.ConnectionString = @"server=sql-server\cos;integrated security=SSPI;database=daas5"; 
    oCn.Open(); 

    // Create a SQL command object. 
    string strSQL = "SELECT * FROM dd615.musicdetails WHERE artistname LIKE '%" + 
         searchTerm + "%' OR recordname LIKE '%" + searchTerm + "%' 
         OR recordtype LIKE '%" + searchTerm + "%' 
         OR format LIKE '%" + searchTerm + "%' 
        FOR XML AUTO, ELEMENTS, ROOT('musicInformation') "; 

    SqlCommand myCommand = new SqlCommand(strSQL, oCn); 
}   

任何幫助,將不勝感激

+0

您使用的是哪個**版本的SQL Server?什麼 - 如果有的話 - 你會得到什麼?輸出是否「錯誤」,或者您是否遇到錯誤 - 如果是這樣,請問它是什麼(請詳細說明)?你能告訴我們你的XML到底應該是什麼樣子嗎? – 2010-06-30 14:35:37

+0

作爲一個方面說明:你知道,這樣的肯定會表現可怕的糟糕,對吧?搜索'LIKE%something%'是禁用所有索引的完美方法,因此您將在整個表中獲得150%的全表掃描保證..... – 2010-06-30 14:38:16

+0

我使用的SQL服務器版本是2005年,是的我當我得到它輸出XML的時候,我將會解決這個問題。我不知道它是否有效,因爲我設計了方法,因此它返回一個值,我不知道如何從sql語句中獲取xml並將其放入XDocument/XmlDocument – dbomb101 2010-06-30 14:51:29

回答

1

你的SQL似乎罰款至今 - 最好的選擇將是你的SqlCommand對象上使用.ExecuteXmlReader

XmlReader reader = myCommand.ExecuteXmlReader(); 

一旦你的,你可以很容易地這個加載到XDocument

XDocument doc = XDocument.Load(rdr); 

XmlDocument

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(rdr); 

所以挑選適合你的作品爲準!