手順 1: SharePoint Server 2007 SQL Server コネクタに対してプロジェクトを作成する
最終更新日: 2010年4月21日
適用対象: SharePoint Server 2010
サンプルを使用する前に、フェデレーション検索 SQL サーバー コネクタ用の ASPX ページを使用して Web サイト プロジェクトを作成する必要があります。
このサンプルの完全なコードは、「MSDN Code Gallery (英語)」の「フェデレーション検索 SQL Server コネクタのサンプル」リソース ページからダウンロードすることができます。
Web サイト プロジェクトを作成するには
Visual Studio 2010 の [ファイル] メニューの [新規作成] をポイントし、[Web サイト] をクリックします。
[インストールされているテンプレート] で、[Visual C#]、[ASP.NET 空の Web サイト] の順にクリックします。
[場所] で、[ファイル システム] をクリックし、必要であれば、[参照] をクリックして、Web サイト用の適切な場所を探します。この場所は、Visual Studio プロジェクトと Web サイト用の標準の場所と、Web アプリケーションを展開する Web サイトの仮想ディレクトリの下の場所のどちらでもかまいません。
[OK] をクリックします。
ASPX ページを作成するには
[Web サイト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[Web Form] をクリックし、「searchresellers.aspx」と入力します。
[別のファイルにコードを書き込む] をオンにし、[追加] をクリックします。
ソリューション エクスプローラーで、[searchresellers.aspx.cs] をダブルクリックします。
searchresellers.aspx.cs で、次の using ステートメントをコードの最上部にある namespace ディレクティブの横に追加します。
using System.Text; using System.Data.SqlClient;
クラス宣言の下に次のコードを追加します。
string query; string vendor; string format; string connectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorksDW;";
次のコードを使用して、Render メソッドを上書きします。
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)); } } }
GetResultsXML メソッドのコードを追加します。このメソッドでは、AdventureWorksDW データベースに対してクエリ用語を含む SELECT ステートメントを実行し、その結果を 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(); } }
GetResultsHTML メソッドのコードを追加します。このメソッドでは、AdventureWorksDW データベースに対して、クエリ用語を含む SELECT ステートメントを実行し、HTML でその結果を表示します。
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(); }
GetVendorHTML メソッドのコードを追加します。このメソッドは、単一の結果のベンダー データを返します。
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(); }
次の手順
手順 2: SharePoint Server 2007 SQL Server コネクタを展開およびテストする