手順 1: SharePoint Server 2007 SQL Server コネクタに対してプロジェクトを作成する

最終更新日: 2010年4月21日

適用対象: SharePoint Server 2010

サンプルを使用する前に、フェデレーション検索 SQL サーバー コネクタ用の ASPX ページを使用して Web サイト プロジェクトを作成する必要があります。

このサンプルの完全なコードは、「MSDN Code Gallery (英語)」の「フェデレーション検索 SQL Server コネクタのサンプル」リソース ページからダウンロードすることができます。

Web サイト プロジェクトを作成するには

  1. Visual Studio 2010 の [ファイル] メニューの [新規作成] をポイントし、[Web サイト] をクリックします。

  2. [インストールされているテンプレート] で、[Visual C#]、[ASP.NET 空の Web サイト] の順にクリックします。

  3. [場所] で、[ファイル システム] をクリックし、必要であれば、[参照] をクリックして、Web サイト用の適切な場所を探します。この場所は、Visual Studio プロジェクトと Web サイト用の標準の場所と、Web アプリケーションを展開する Web サイトの仮想ディレクトリの下の場所のどちらでもかまいません。

  4. [OK] をクリックします。

ASPX ページを作成するには

  1. [Web サイト] メニューの [新しい項目の追加] をクリックします。

  2. [新しい項目の追加] ダイアログ ボックスで、[Web Form] をクリックし、「searchresellers.aspx」と入力します。

  3. [別のファイルにコードを書き込む] をオンにし、[追加] をクリックします。

  4. ソリューション エクスプローラーで、[searchresellers.aspx.cs] をダブルクリックします。

  5. searchresellers.aspx.cs で、次の using ステートメントをコードの最上部にある namespace ディレクティブの横に追加します。

    using System.Text;
    using System.Data.SqlClient;
    
  6. クラス宣言の下に次のコードを追加します。

    string query;
    string vendor;
    string format;
    string connectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorksDW;";
    
  7. 次のコードを使用して、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));
            }
        }
    }
    
  8. 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();
        }
    }
    
  9. 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();
    }
    
  10. 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 コネクタを展開およびテストする

関連項目

概念

コード サンプル: フェデレーション検索 SQL Server コネクタ

SharePoint Server 2007 コネクタを構築するためのアーキテクチャ ガイダンス