Étape 1: créer le projet pour le connecteur de recherche fédérée SQL Server
Dernière modification : mercredi 21 avril 2010
S’applique à : SharePoint Server 2010
Avant de pouvoir utiliser l'exemple, vous devez créer le projet de site Web avec la page ASPX pour le connecteur fédéré de recherche SQL Server.
Vous pouvez télécharger le code complet de cet exemple à partir de la page Exemple de connecteur fédéré de recherche SQL Server (éventuellement en anglais) dans la Bibliothèque de code MSDN (éventuellement en anglais).
Créer un projet de site Web
Dans Visual Studio 2010, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Site Web.
Dans Modèles installés, cliquez sur Visual C#, puis sur ASP.NET Empty Web Site.
Dans Emplacement, cliquez sur Système de fichiers et, si nécessaire, cliquez sur Parcourir pour rechercher l'emplacement correct de ce site Web. Cet emplacement peut être l'emplacement standard de vos projets Visual Studio et des sites Web, ou l'emplacement sous le répertoire virtuel de votre site Web où vous allez déployer cette application Web.
Cliquez sur OK.
Créer la page ASPX
Dans le menu Site_Web, cliquez sur Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément cliquez sur Formulaire Webet tapez searchresellers.aspx .
Activez la case Placer le code dans un fichier distinct, et cliquez sur Ajouter.
Dans l'Explorateur de solutions, double-cliquez sur searchresellers.aspx.cs.
Dans searchresellers.aspx.cs, ajoutez les instructions suivantes using aux directives d'espaces de noms dans la partie supérieure du code.
using System.Text; using System.Data.SqlClient;
Ajoutez le code suivant sous la déclaration de classe.
string query; string vendor; string format; string connectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorksDW;";
Remplacez la méthode Render en utilisant le code suivant.
protected override void Render(HtmlTextWriter writer) { query = Request.QueryString["q"]; vendor = Request.QueryString["v"]; format = Request.QueryString["f"]; if (vendor != null && vendor.Length > 0) { writer.Write(GetVendorHTML(vendor)); } else { if (format == "htm") { writer.Write(GetResultsHTML(query)); } else { StringBuilder sb = new StringBuilder(); Response.ContentType = "text/xml"; writer.Write(GetResultsXML(query)); } } }
Ajoutez le code de la méthode GetResultsXML. Cette méthode exécute une instruction SELECT avec le terme de requête dans la base de données AdventureWorksDW, puis convertit les résultats au format RSS.
private string GetResultsXML(string queryTerm) { using (SqlConnection connect = new SqlConnection(connectionString)) { connect.Open(); string strCommand = string.Format("select ResellerName,BusinessType,ProductLine,AnnualRevenue from DimReseller WHERE ResellerName like '%{0}%'", queryTerm); SqlCommand command = new SqlCommand(strCommand, connect); SqlDataReader sqlReader = command.ExecuteReader(); StringBuilder resultsXML = new StringBuilder(); resultsXML.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); resultsXML.Append("<rss version=\"2.0\">"); resultsXML.AppendFormat("<channel><title><![CDATA[Adventure Works: {0}]]></title><link/><description/><ttl>60</ttl>", queryTerm); while (sqlReader.Read()) { resultsXML.AppendFormat("<item><title><![CDATA[{0}]]></title><link><![CDATA[{4}?v={0}&q={5}]]></link><description><![CDATA[{1} {2} {3}]]></description></item>", sqlReader[0], sqlReader[1], sqlReader[2], sqlReader[3], Request.Path.ToString(), query); } resultsXML.Append("</channel></rss>"); return resultsXML.ToString(); } }
Ajoutez le code de la méthode GetResultsHTML. Cette méthode exécute une instruction SELECT avec le terme de requête dans la base de données AdventureWorksDW, puis convertit les résultats au format RSS.
private string GetResultsHTML(string queryTerm) { StringBuilder resultsHTML = new StringBuilder(); resultsHTML.Append("<html><head><title>More Results HTML Page</title></head><body>"); using (SqlConnection connect = new SqlConnection(connectionString)) { connect.Open(); string strCommand = string.Format("select ResellerName,BusinessType,ProductLine,AnnualRevenue from DimReseller WHERE ResellerName LIKE '%{0}%'", query); SqlCommand command = new SqlCommand(strCommand, connect); SqlDataReader sqlReader = command.ExecuteReader(); if (sqlReader.HasRows) { int i = 0; while (sqlReader.Read()) { if (i > 14) { break; } else { resultsHTML.AppendFormat("<p><a href='{4}?v={0}'>{0}</a><br>{1} {2} {3}</p>", sqlReader[0], sqlReader[1], sqlReader[2], sqlReader[3], Request.Path.ToString()); i++; } } } else { resultsHTML.AppendFormat("<p>No results for query: <b>{0}</b>", query); } if (!sqlReader.IsClosed) { sqlReader.Close(); } } resultsHTML.Append("</body></html>"); return resultsHTML.ToString(); }
Ajoutez le code pour la méthode GetVendorHTML. Cette méthode retourne les données du fournisseur pour un résultat unique.
private string GetVendorHTML(string vendor) { StringBuilder vendorHTML = new StringBuilder(); string strCommand = string.Format("select ResellerName,BusinessType,ProductLine,AnnualRevenue from DimReseller WHERE ResellerName='{0}'", vendor); vendorHTML.Append("<html><head><title>More Results HTML Page</title></head><body>"); using (SqlConnection connect = new SqlConnection(connectionString)) { connect.Open(); SqlCommand command = new SqlCommand(strCommand, connect); SqlDataReader sqlReader = command.ExecuteReader(); if (sqlReader.HasRows) { while (sqlReader.Read()) { vendorHTML.AppendFormat("<p><b>{0}</b><br>{1} {2} {3}</p>", sqlReader[0], sqlReader[1], sqlReader[2], sqlReader[3]); } } else { vendorHTML.AppendFormat("No vendor found for: <b>{0}</b>", vendor); } if (!sqlReader.IsClosed) { sqlReader.Close(); } vendorHTML.AppendFormat("<p><a href={0}?q={1}&f=htm>Return to Vendor List</a></p>", Request.Path,query); } return vendorHTML.ToString(); }
Étapes suivantes
Étape 2 : déployer et tester le connecteur de recherche fédérée SQL Server
Voir aussi
Concepts
Exemple de code : Connecteur SQL Server pour la recherche fédérée
Conseils d'architecture pour créer des connecteurs de recherche fédérée