【问题标题】:return value Auto Mode XML返回值 自动模式 XML
【发布时间】:2010-06-30 14:33:52
【问题描述】:

我正在尝试为 Web 服务动态编写一些 xml。最近向我展示了如何为我的 sql 查询使用 FOR XML AUTO 子句,但我不确定是否正确编写查询,除此之外,我不确定如何返回文档值

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);
}          

任何帮助将不胜感激

【问题讨论】:

  • 您使用的是哪个版本的 SQL Server?什么——如果有的话——你得到了什么?输出只是“错误”,还是您收到错误 - 如果是这样,它是什么(请详细说明)?你能告诉我们你的 XML 最终应该是什么样子吗?
  • 附带说明:你知道像这样的肯定会表现得很糟糕,对吧?搜索 LIKE %something% 是禁用所有索引的完美方法,因此您将 150% 保证对表进行全表扫描.....
  • 我使用的 SQL 服务器版本是 2005 年,是的,这是一项匆忙的工作,一旦我得到它输出 XML,我将修复它。我现在不知道它是否有效,因为我设计了该方法,因此它返回一个值,我不确定如何从 sql 语句中获取 xml 并将其放入 XDocument/XmlDocument

标签: c# sql-server xml


【解决方案1】:

到目前为止,您的 SQL 似乎还不错 - 最好的办法是在您的 SqlCommand 对象上使用 .ExecuteXmlReader。

XmlReader reader = myCommand.ExecuteXmlReader();

一旦你有了它,你就可以轻松地将它加载到XDocument

XDocument doc = XDocument.Load(rdr);

或XmlDocument

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

所以选择适合你的!

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2011-09-07
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多