步骤 1:为联合搜索 SQL Server 连接器创建项目

备注

本主题介绍 Infrastructure Update for Microsoft Office Servers包含的功能。若要下载此更新,请参阅 2008 年 7 月 15 日版 SharePoint Server 2007 基础结构更新说明

在使用此示例之前,您需要为联合搜索 SQL Server 连接器创建使用 ASPX 页的网站项目。

您可以从联合搜索 SQL Server 连接器示例发布版下载此示例的完整代码。此发布版位于 MSDN 代码库Microsoft Office SharePoint Server 2007 SDK 搜索示例资源页上。

创建网站项目

  1. 在 Visual Studio 2008 中,在“文件”菜单上,指向“新建”,然后单击“网站”。

  2. 在“Visual Studio 已安装的模板”中,单击“ASP.NET 网站”。

  3. 在“位置”中,单击“文件系统”,如有必要,单击“浏览”以查找此网站的正确位置。此位置既可以是您的 Visual Studio 项目和网站的标准位置,也可以是网站的虚拟目录下用来部署此 Web 应用程序的位置。

  4. 在“语言”中,单击“Visual C#”,然后单击“确定”。

创建 ASPX 页

  1. 在“解决方案资源管理器”中,右键单击“Default.aspx”,然后单击“删除”,以删除该项目创建的默认 ASPX 页。

  2. 在“网站”菜单上,单击“添加新项”。

  3. 在“添加新项”对话框中,单击“Web 窗体”,然后键入 searchresellers.aspx。

  4. 选中“将代码放在单独的文件中”,然后单击“添加”。

  5. 在“解决方案资源管理器”中,双击“searchresellers.aspx.cs”。

  6. 在 searchresellers.aspx.cs 中,将下面的 using 语句添加到代码顶部附近的命名空间指令中。

    using System.Text;
    using System.Data.SqlClient;
    
  7. 将以下代码添加到类声明下方。

    string query;
    string vendor;
    string format;
    string connectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorksDW;";
    
  8. 使用以下代码重写 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));
            }
        }
    }
    
  9. 添加 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();
        }
    }
    
  10. 添加 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();
    }
    

后续步骤

步骤 2:部署和测试联合搜索 SQL Server 连接器

See Also

概念

联合搜索 SQL Server 连接器示例

构建联合搜索连接器的体系结构指南