2015-02-22 3 views
1

Я новичок в C# и ASP.NETДобавить атрибут XML в ASP.NET WebServices

мне удалось поместить базу данных MS SQL Server в XML-документ, но то, что я пытаюсь сделать сейчас, чтобы добавьте атрибут в XML, который будет id из базы данных.

что-то вроде:

<Products> 
    <product id=1> 
     <name>Some name</name> 
    </product> 
    <product id=2> 
     <name>Some other</name> 
    </product> 
    <product id=3> 
     <name>Some other name</name> 
    </product> 
</Products> 

Это то, что я до сих пор:
products.asmx.cs:

[WebMethod] 
public XmlDocument productsAll() 
{ 
    string conString = "Data Source=my_db.com;Integrated Security=True"; 
    SqlConnection sqlConn = new SqlConnection(conString); 

    SqlCommand sqlCmd = sqlConn.CreateCommand(); 
    sqlCmd.CommandType = CommandType.Text; 
    sqlCmd.CommandText = "SELECT * FROM Products"; 

    SqlDataAdapter dataAdptr = new SqlDataAdapter(); 
    dataAdptr.SelectCommand = sqlCmd; 
    DataSet dsProducts = new DataSet("Products"); 
    dataAdptr.Fill(dsProducts, "product"); 

    XmlDocument xmlDom = new XmlDocument(); 
    xmlDom.LoadXml(dsProducts.GetXml()); 
    return xmlDom; 
} 
+0

'.asmx' веб-служб мертвы - проверить либо WCF или новый ASP.NET WebAPI для REST услуг –

+0

курсовых чувак – knowbody

ответ

2

Самый простой способ - создать XML в SQL Server и просто зачитать полученный XML.

Попробуйте что-то вроде этого:

public XmlDocument productsAll() 
{ 
    // define connection string 
    string conString = "Data Source=my_db.com;Integrated Security=True"; 

    // define SQL query to use 
    string query = "SELECT ID AS '@ID', Name FROM dbo.Products FOR XML PATH('Product'), ROOT('Products')"; 

    // set up connection and command objects 
    using (SqlConnection sqlConn = new SqlConnection(conString)) 
    using (SqlCommand sqlCmd = new SqlCommand(query, sqlConn)) 
    { 
     // open connection 
     sqlConn.Open(); 

     // execute query, read out the XML from the T-SQL query 
     string xmlContents = sqlCmd.ExecuteScalar().ToString(); 

     // close connection 
     sqlConn.Close(); 

     // parse XML received from SQL Server into a XmlDocument and return 
     XmlDocument xmlDom = new XmlDocument(); 
     xmlDom.LoadXml(xmlContents); 

     return xmlDom; 
    } 
} 
+0

я получаю ошибку' SQLException был необработанным ... 'on' string xmlContents' – knowbody

+1

@knowbody: ваша строка соединения неполна - у вас есть «Источник данных» (имя сервера), но нет имени базы данных ..... попробуйте что-то вроде: 'string conString = server = my_db.com; database = XXXXXXXXX; Integrated Security = True; 'и заменить XXXXXX на то, что ваше фактическое имя базы данных равно –

+1

, теперь все хорошо.^что, плюс вы могли бы сделать' sqlCmd.ExecuteScalar как строку' в случай вы получаете 'null', но все работает нормально. супер старый школа. Спасибо – knowbody

0

Я отвечаю с Linux машины так не SQL Server под рукой право Теперь. Пожалуйста, проверьте помощь T-SQL для SELECT FOR XML. Вы можете управлять структурой полученного XML.

Смежные вопросы