2010-06-30 5 views
1

J'essaie d'écrire dynamiquement du code XML pour un service Web. J'ai récemment été montré comment utiliser la clause FOR XML AUTO pour ma requête sql, mais je ne suis pas sûr Si j'écris la requête correctement et en plus je ne suis pas sûr de savoir comment retourner les valeurs du documentValeur renvoyée Auto Mode 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); 
}   

toute aide serait grandement appréciée

+0

Quelle ** version ** de SQL Server utilisez-vous? Qu'est-ce que - si quelque chose - obtenez-vous? Est-ce que la sortie est juste "fausse", ou vous obtenez une erreur - si oui, qu'est-ce que c'est (en détail, s'il vous plaît) ?? Pouvez-vous nous montrer à quoi ressemblera votre XML à la fin? –

+0

En note: vous êtes conscient qu'un tel résultat va être horriblement mauvais, n'est-ce pas? La recherche de 'LIKE% something%' est un moyen idéal pour désactiver tous les index, donc vous obtiendrez un balayage de table complet à travers la table 150% garanti ..... –

+0

La version de serveur SQL que j'utilise est 2005, ouais je Suis-je un travail pressé que je vais réparer une fois que je l'obtenir en sortie de XML. Je ne sais pas si cela fonctionne ou non pour le moment puisque j'ai conçu la méthode pour qu'elle renvoie une valeur et je ne suis pas sûr de savoir comment extraire le xml de l'instruction sql et le placer dans XDocument/XmlDocument – dbomb101

Répondre

1

votre SQL semble bien à ce jour - le meilleur pari serait d'utiliser le .ExecuteXmlReader sur votre objet SqlCommand.

XmlReader reader = myCommand.ExecuteXmlReader(); 

Une fois que vous avez, vous pouvez facilement charger ce dans un XDocument

XDocument doc = XDocument.Load(rdr); 

ou un XmlDocument

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

alors choisissez celui qui vous convient!

Questions connexes