<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>venjiang</title>
        <link>http://blog.hidotnet.com/venjiang/Default.aspx</link>
        <description>hiDotNet.com,SoGot.com,DoWithMe.com</description>
        <language>zh-CN</language>
        <copyright>venjiang</copyright>
        <managingEditor>venjiang@msn.com</managingEditor>
        <generator>hiText Version 1.9.0.27</generator>
        <image>
            <title>venjiang</title>
            <url>http://blog.hidotnet.com/images/RSS2Image.gif</url>
            <link>http://blog.hidotnet.com/venjiang/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Google 博客搜索 Ping 服务应用</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2007/06/14/275.aspx</link>
            <description>&lt;img width="10" height="1" src="file:///clear.gif" alt="" /&gt;
&lt;p&gt;&lt;font size="-1"&gt;&lt;span style="background-color: rgb(0, 0, 255); color: rgb(255, 255, 255);"&gt;Google Ping 介绍&lt;/span&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt;通 过 Google“博客搜索”Ping API, 用户可以程序化的方式将博客内容的更新通知给 Google“博客搜索”引擎。这对于经常更新博客内容的用户尤其有用。博客服务提供商的管理人员也可以利用此API将其平台上的博客内容变化向 Google 通告，以便 Google“博客搜索”及时抓取来自这一服务提供商的最新内容。为设置对 Google“博客搜索”的自动 Ping 机制，请按照如下所述设置XML-RPC客户端或REST客户端以发送请求。您可以任选一种方法进行通知；两者都将按照相同的方式进行处理。&lt;/font&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;font size="-1"&gt; &lt;a name="about"&gt;&lt;/a&gt; &lt;/font&gt;
&lt;h1 style="margin-top: 10px;"&gt; &lt;font size="-1"&gt;
&lt;table width="100%" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="border-top: 1px solid rgb(255, 158, 33); background-color: rgb(248, 223, 168);"&gt; &lt;font color="#000000"&gt;设置XML-RPC客户&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/font&gt;&lt;/h1&gt;
&lt;p&gt;&lt;font size="-1"&gt;XML-RPC客户的请求应包含如下元素：&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt; &lt;strong&gt;RPC端点：&lt;/strong&gt; http://blogsearch.google.com/ping/RPC2 &lt;br /&gt;
&lt;strong&gt;调用方法名：&lt;/strong&gt;  weblogUpdates.extendedPing &lt;br /&gt;
&lt;strong&gt;参数：&lt;/strong&gt; (应按照如下所列的相同顺序传送)
&lt;ul&gt;
    &lt;li&gt; 站点名 &lt;/li&gt;
    &lt;li&gt; 站点URL &lt;/li&gt;
    &lt;li&gt; 需要检查更新的页面URL &lt;/li&gt;
    &lt;li&gt; 相应的RSS、RDF或Atom种子的URL &lt;/li&gt;
    &lt;li&gt; &lt;em&gt;可选&lt;/em&gt; 页面内容的分类名称(或标签)。您可以指定多个值，之间用'|'字符进行分隔。 &lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt; XML-RPC响应中将返回含有两个元素的&amp;lt;struct&amp;gt; ：
&lt;ul&gt;
    &lt;li&gt; flerror (Boolean)：当有错误发生时设为true/1 &lt;/li&gt;
    &lt;li&gt; message (string) ："Thanks for the ping." (如果成功) 或者一个错误信息(如果不成功)。 &lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt; &lt;strong&gt;XML-RPC请求的例子&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;
&lt;hr noshade="noshade" /&gt;
&lt;code&gt; &lt;/code&gt;
&lt;pre&gt;POST /RPC2 HTTP/1.0&lt;br /&gt;User-Agent: request&lt;br /&gt;Host: blogsearch.google.com&lt;br /&gt;Content-Type: text/xml&lt;br /&gt;Content-length: 447&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;methodCall&amp;gt;&lt;br /&gt;  &amp;lt;methodName&amp;gt;weblogUpdates.extendedPing&amp;lt;/methodName&amp;gt;&lt;br /&gt;  &amp;lt;params&amp;gt;&lt;br /&gt;    &amp;lt;param&amp;gt;&lt;br /&gt;      &amp;lt;value&amp;gt;Official Google Blog&amp;lt;/value&amp;gt;&lt;br /&gt;    &amp;lt;/param&amp;gt;&lt;br /&gt;    &amp;lt;param&amp;gt;&lt;br /&gt;      &amp;lt;value&amp;gt;http://googleblog.blogspot.com/&amp;lt;/value&amp;gt;&lt;br /&gt;    &amp;lt;/param&amp;gt;&lt;br /&gt;    &amp;lt;param&amp;gt;&lt;br /&gt;      &amp;lt;value&amp;gt;http://googleblog.blogspot.com/&amp;lt;/value&amp;gt;&lt;br /&gt;    &amp;lt;/param&amp;gt;&lt;br /&gt;    &amp;lt;param&amp;gt;&lt;br /&gt;      &amp;lt;value&amp;gt;http://googleblog.blogspot.com/atom.xml&amp;lt;/value&amp;gt;&lt;br /&gt;    &amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;/params&amp;gt;&lt;br /&gt;&amp;lt;/methodCall&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font size="-1"&gt;&lt;strong&gt;XML-RPC响应的例子&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;
&lt;hr noshade="noshade" /&gt;
&lt;code&gt; &lt;/code&gt;
&lt;pre&gt;HTTP/1.1 200 OK&lt;br /&gt;Connection: close&lt;br /&gt;Content-Length: 451&lt;br /&gt;Content-Type: text/xml&lt;br /&gt;Date: Sun, 30 Sep 2001 20:02:30 GMT&lt;br /&gt;Server: Apache&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;methodResponse&amp;gt;&lt;br /&gt;  &amp;lt;params&amp;gt;&lt;br /&gt;    &amp;lt;param&amp;gt;&lt;br /&gt;      &amp;lt;value&amp;gt;&lt;br /&gt;        &amp;lt;struct&amp;gt;&lt;br /&gt;          &amp;lt;member&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;flerror&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;value&amp;gt;&lt;br /&gt;              &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;            &amp;lt;/value&amp;gt;&lt;br /&gt;          &amp;lt;/member&amp;gt;&lt;br /&gt;          &amp;lt;member&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;message&amp;lt;/name&amp;gt;&lt;br /&gt;              &amp;lt;value&amp;gt;Thanks for the ping.&amp;lt;/value&amp;gt;&lt;br /&gt;          &amp;lt;/member&amp;gt;&lt;br /&gt;        &amp;lt;/struct&amp;gt;&lt;br /&gt;      &amp;lt;/value&amp;gt;&lt;br /&gt;    &amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;/params&amp;gt;&lt;br /&gt;&amp;lt;/methodResponse&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;font size="-1"&gt; &lt;a name="about"&gt;&lt;/a&gt; &lt;/font&gt;
&lt;h1 style="margin-top: 10px;"&gt; &lt;font size="-1"&gt;
&lt;table width="100%" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="border-top: 1px solid rgb(255, 158, 33); background-color: rgb(248, 223, 168);"&gt; &lt;font color="#000000"&gt; 设置REST客户&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/font&gt;&lt;/h1&gt;
&lt;p&gt;&lt;font size="-1"&gt;REST客户的请求中包含如下元素：&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt;&lt;strong&gt;URL:&lt;/strong&gt; http://blogsearch.google.com/ping&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt;&lt;strong&gt;参数:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;name = 博客的名字&lt;/li&gt;
    &lt;li&gt;url = 博客的URL&lt;/li&gt;
    &lt;li&gt;changesURL = RSS、RDF或Atom种子的URL (可选)&lt;/li&gt;
&lt;/ul&gt;
响应中将返回文本内容，在成功的时候是"Thanks for the ping."，在失败时是一条错误消息。 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="-1"&gt;&lt;strong&gt;例子：&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;
&lt;textarea cols="85" readonly="readonly"&gt;http://blogsearch.google.com/ping?name=Official+Google+Blog&amp;amp;url=http%3A%2F%2Fgoogleblog.blogspot.com%2F&amp;amp;changesURL=http%3A%2F%2Fgoogleblog.blogspot.com%2Fatom.xml &lt;/textarea&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1 style="margin-top: 10px;"&gt; &lt;font size="-1"&gt;
&lt;table width="100%" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="border-top: 1px solid rgb(255, 158, 33); background-color: rgb(248, 223, 168);"&gt; &lt;font color="#000000"&gt; changes.xml的格式&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/font&gt;&lt;/h1&gt;
&lt;p&gt;&lt;font size="-1"&gt;Google 将所接受的“博客搜索” Ping 记录以XML格式发布到&lt;a href="http://blogsearch.google.com/changes.xml" target="_top"&gt;http://blogsearch.google.com/changes.xml&lt;/a&gt;。changes.xml文件格式包含一个根元素&amp;lt;weblogUpdates&amp;gt;和一个或多个的&amp;lt;weblog&amp;gt;元素。&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;&amp;lt;weblogUpdates version="2" updated="Wed, 30 May 2006 14:10:00 GMT" count="1384779"&amp;gt;&lt;br /&gt;  &amp;lt;weblog name="Some Blog"&lt;br /&gt;          url="http://googleblog.blogspot.com" &lt;br /&gt;          rssUrl="http://googleblog.blogspot.com/atom.xml"&lt;br /&gt;          when="1"/&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/weblogUpdates&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;font size="-1"&gt;
&lt;h4&gt;&lt;a name="weblogUpdates_element"&gt; &amp;lt;weblogUpdates&amp;gt;元素&lt;/a&gt;&lt;/h4&gt;
&lt;/font&gt; &lt;font size="-1"&gt; &lt;/font&gt;
&lt;ul&gt;&lt;font size="-1"&gt;
    &lt;li&gt; &lt;strong&gt;version&lt;/strong&gt;：用来指示一个主要的格式变化，目前的版本是2。  &lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;updated&lt;/strong&gt;：以 &lt;a href="http://www.w3.org/Protocols/rfc1945/rfc1945" target="_top"&gt;HTTP 1.0&lt;/a&gt;格式表示的日期时间。它指示了该文件上一次更新的时间。 &lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;count&lt;/strong&gt;：一个递增的数字，表示了changes.xml文件的版本。新版本changes.xml文件通常具有更大的count值。 &lt;/li&gt;
    &lt;/font&gt;&lt;/ul&gt;
    &lt;p&gt;   &lt;font size="-1"&gt;
    &lt;h4&gt;&lt;a name="weblog_element"&gt; &amp;lt;weblog&amp;gt;元素 &lt;/a&gt;&lt;/h4&gt;
    &lt;/font&gt;  &lt;font size="-1"&gt;
    &lt;ul&gt;
        &lt;li&gt; &lt;strong&gt;name&lt;/strong&gt;：Blog的名称。 &lt;/li&gt;
        &lt;li&gt; &lt;strong&gt;url&lt;/strong&gt;： Blog的url。 &lt;/li&gt;
        &lt;li&gt; &lt;strong&gt;rssUrl&lt;/strong&gt;： 相应的RSS、Atom或其它种子的URL。 &lt;/li&gt;
        &lt;li&gt; &lt;strong&gt;when&lt;/strong&gt;： &amp;lt;weblogUpdates&amp;gt;元素的updated属性对应的时间减去相应的 Ping 发生的时间的差值，单位为秒。&lt;/li&gt;
    &lt;/ul&gt;
    ====================================================================&lt;/font&gt;&lt;/p&gt;
    &lt;p style="font-weight: bold; background-color: rgb(0, 0, 255); color: rgb(255, 255, 255);"&gt;&lt;font size="-1"&gt;下面实现如何使用XML RPC编程实现Google Ping服务.&lt;/font&gt;&lt;/p&gt;
    &lt;p&gt;&lt;font size="-1"&gt;首先,下载&lt;a href="http://www.xml-rpc.net/"&gt;CookComputing.XmlRpc&lt;/a&gt; &lt;br /&gt;
    &lt;/font&gt;&lt;/p&gt;
    &lt;p&gt;&lt;font size="-1"&gt;我使用的是2.0版本.最新版为2.1.0&lt;/font&gt;&lt;/p&gt;
    &lt;p style="font-weight: bold;"&gt;1.建立xml rpc客户端&lt;/p&gt;
    &lt;p&gt; public class GoogleXmlRpc&lt;br /&gt;
        {&lt;br /&gt;
            /// &amp;lt;summary&amp;gt;&lt;br /&gt;
            /// 返回值,用于处理Google Ping返回值的结构&lt;br /&gt;
            /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
            public struct ReturnValue&lt;br /&gt;
            {&lt;br /&gt;
                public bool flerror;&lt;br /&gt;
                public string message;&lt;br /&gt;
            }&lt;br /&gt;
    &lt;br /&gt;
            [XmlRpcUrl("http://blogsearch.google.com/ping/RPC2")]&lt;br /&gt;
            public interface IGooglePing : IXmlRpcProxy&lt;br /&gt;
            {&lt;br /&gt;
                [XmlRpcMethod("weblogUpdates.extendedPing")]&lt;br /&gt;
                ReturnValue Ping(string websiteName, string websiteUrl, string changedUrl, string feedUrl);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;/p&gt;
    &lt;br /&gt;
    &lt;p style="font-weight: bold;"&gt;2.向Google发出一个ping通告&lt;/p&gt;
    &lt;p&gt;在你的程序添加文章或更新文章时,发出ping通告.&lt;/p&gt;
    &lt;p&gt;        string websiteName="venjiang 的博客";                                                    // 博客名称&lt;br /&gt;
            string websiteUrl="http://blog.hidotnet.com/venjiang/";        // 博客网站地址&lt;br /&gt;
            string changeUrl = "http://blog.hidotnet.com/venjiang/";                             // 要更新的地址&lt;br /&gt;
            string feedUrl = "http://blog.hidotnet.com/venjiang/Rss.aspx";             // 聚合地址rss或atom&lt;/p&gt;
    &lt;p&gt;        GoogleXmlRpc.IGooglePing proxy = (GoogleXmlRpc.IGooglePing)XmlRpcProxyGen.Create(typeof(GoogleXmlRpc.IGooglePing));    // 创建代理类&lt;/p&gt;
    &lt;p&gt;        // 最新版本,支持泛型,可以直接使用: &lt;br /&gt;
    &lt;/p&gt;
    &lt;p&gt;       // GoogleXmlRpc.IGooglePing proxy =XmlRpcProxyGen.Create&amp;lt;GoogleXmlRpc.IGooglePing&amp;gt;();&lt;/p&gt;
    &lt;p&gt;        GoogleXmlRpc.ReturnValue returnValue = proxy.Ping(websiteName, websiteUrl, changeUrl, feedUrl);    // ping&lt;br /&gt;
    &lt;/p&gt;
    &lt;p&gt;        if (returnValue.flerror)&lt;br /&gt;
                Response.Write( "Google Ping 出错!");&lt;br /&gt;
            else&lt;br /&gt;
                Response.Write "Google Ping 成功!";&lt;/p&gt;
    &lt;br /&gt;
    &lt;p style="font-weight: bold;"&gt;3.查看google 更新列表&lt;/p&gt;
    &lt;p&gt;下载:&lt;font size="-1"&gt;&lt;a href="http://blogsearch.google.com/changes.xml" target="_top"&gt;http://blogsearch.google.com/changes.xml&lt;/a&gt; 你可以看到你的博客相关信息已加入更新列表,目前google更新列表,有一定延迟.&lt;br /&gt;
    &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/275.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2007/06/14/275.aspx</guid>
            <pubDate>Thu, 14 Jun 2007 17:02:49 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/275.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2007/06/14/275.aspx#feedback</comments>
            <slash:comments>371</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/275.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/275.aspx</trackback:ping>
        </item>
        <item>
            <title>测试使用新的缓存机制</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2007/03/10/111.aspx</link>
            <description>测试使用新的缓存机制,前台是否即时更新.&lt;br /&gt;
临时解决访问速度慢问题.&lt;br /&gt;
前台不能即时呈现时请点击右侧刷新按钮,&lt;br /&gt;
如果发现更多问题,请即时联系我.&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/111.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2007/03/10/111.aspx</guid>
            <pubDate>Sat, 10 Mar 2007 01:04:18 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/111.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2007/03/10/111.aspx#feedback</comments>
            <slash:comments>244</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/111.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/111.aspx</trackback:ping>
        </item>
        <item>
            <title>安装Visual Studio 2005 Service Pack 1</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/12/18/78.aspx</link>
            <description>前几日jacky告诉我vs2k5 sp1出了,随即下载.今日抽空赶紧安装.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;br /&gt;
准备环境:&lt;/span&gt;&lt;br /&gt;
Microsoft? Visual Studio? 2005 Service Pack 1&lt;br /&gt;
&lt;br /&gt;
下面为中文版&lt;br /&gt;
下载地址:&lt;br /&gt;
Microsoft? Visual Studio? 2005 Service Pack 1&lt;br /&gt;
下载地址:&lt;br /&gt;
http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&amp;amp;DisplayLang=zh-cn&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;
&lt;li&gt;&lt;strong&gt;安装要求：&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;目标计算机上必须安装了受支持的 Visual Studio® 2005 产品副本。&lt;/li&gt;
    &lt;li&gt;目标计算机上安装了 Microsoft® Windows® Installer 3.1 或更高版本。&lt;/li&gt;
    &lt;li&gt;至少 192MB 的 RAM。建议使用 256MB 或更大内存。&lt;/li&gt;
    &lt;li&gt;硬盘空间至少为 6.2GB
    &lt;ul&gt;
        &lt;li&gt;如果目标计算机上安装了多个 Visual Studio® 2005 产品，硬盘空间要求也会相应大大增加。&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: rgb(255, 0, 0);"&gt;安装可能出现问题解决办法:&lt;/span&gt;&lt;br /&gt;
http://support.microsoft.com/kb/925336  &lt;br /&gt;
&lt;br /&gt;
几个朋友提示安装过程费了些周折,为避免安装出现问题,请按上面的方法,先修改本地安全策略.&lt;br /&gt;
M$这个要求有6G空间,这个实在有些愁人,一些朋友也因空间问题安装出错,抓紧整理我的硬盘空间,但资料实在太多,一时半日无法整理出6G空间.一个补丁400M,干嘛要求这么多空间,M$不是在折腾我们嘛. 决定尝试安装.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;安装前环境:&lt;br /&gt;
&lt;/span&gt;剩余空间:&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;C: 3.88G&lt;br /&gt;
D: 3.57G&lt;br /&gt;
&lt;br /&gt;
Visual Studio 2005 安装在D盘,临时文件夹在C盘,如果你有修改系统临时文件夹路径,确保所在盘有足够空间.&lt;br /&gt;
Visual Studio 2005我是重新安装的,没有安装VB,VC++,其余都有安装.上面所列硬盘空间容量为安装VS2005后剩余.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;安装过程中:&lt;br /&gt;
&lt;/span&gt;剩余空间:&lt;br /&gt;
C: 2.54G &lt;br /&gt;
临时文件写入,然后开始收集信息,过程比较漫长.这个时间你可以去看电视了.或者干脆小睡一会儿,不知道M$花这么长时间收集什么,小心把电脑里的MM搜集走. 在这个过程中,临时文件夹写入450多M,C盘其它地方写入不到1G, 任务管理器查看,整个SP1补丁被全部载入内存,安装程序占用CPU 50%左右.为避免出现什么异外,建议不要开太多程序.&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install1.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
搜集完信息,开始安装....&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install2.jpg" alt="" /&gt;&lt;br /&gt;
这个时间不准确,可以去抽颗烟,喝杯咖啡.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;安装完成后:&lt;/span&gt;&lt;br /&gt;
剩余空间:&lt;br /&gt;
C: 2.98G&lt;br /&gt;
D: 3.56G&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install3.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
VS2005版本&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install4.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;总结:&lt;/span&gt;&lt;br /&gt;
整个过程安装比较顺利,可以看到在搜集信息时,C盘写入1.34G,安装完成后,删除了临时文件,减少450M,D盘,也就是VS2005所在文件夹写入信息并不多.这样看来,如果只安装C#版本的VS,打补丁,C盘有1.5G应该足够了,VS2005安装所在目录并不需要太多空间.当然,如果你的VS2005安装的组件比较多的话,相应空间要求会提高不少.但至少6G这个要求并不是必须的.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;测试:&lt;/span&gt;&lt;br /&gt;
终于可以在中文版上运行Web Application Project了.&lt;br /&gt;
新建:&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install5.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
项目解决方案:&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install6.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
编译:&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install7.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
运行:&lt;br /&gt;
&lt;img src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_Install8.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
另.打开先前M$提供的Web Application Project 项目,可以成功加载.&lt;br /&gt;
&lt;br /&gt;
至此,Visual Studio? 2005 Service Pack 1安装完毕.&lt;br /&gt;
&lt;img src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" alt="" /&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/78.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/12/18/78.aspx</guid>
            <pubDate>Mon, 18 Dec 2006 03:02:50 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/78.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/12/18/78.aspx#feedback</comments>
            <slash:comments>473</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/78.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/78.aspx</trackback:ping>
        </item>
        <item>
            <title>测试</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/12/13/77.aspx</link>
            <description>&lt;a href="http://blog.csdn.net/zdg/archive/2006/12/12/1439158.aspx"&gt;BSP防范Trackback垃圾的一种方法&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;&lt;a id="viewpost1_TitleUrl" href="http://www.cnblogs.com/venjiang/archive/2005/04/14/137638.html"&gt;发布Asp.Net Forums V2.2.1929 官方中文Beta版&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;br /&gt;
测试trackback&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/77.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/12/13/77.aspx</guid>
            <pubDate>Wed, 13 Dec 2006 02:40:06 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/77.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/12/13/77.aspx#feedback</comments>
            <slash:comments>1500</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/77.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/77.aspx</trackback:ping>
        </item>
        <item>
            <title>BlogML 2.0 is Released</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/25/49.aspx</link>
            <description>BlogML是什么?&lt;br /&gt;
BlogML是blog内容的XML格式存储,你能够使用它归档blog内容,或者作为博客转换/迁移的标准格式.当前已有数个blog引擎提供了这个支持.&lt;br /&gt;
&lt;span id="ctl00_ctl00_Content_Main_wikiSourceLabel"&gt;
&lt;ul&gt;
    &lt;li&gt;Community Server&lt;/li&gt;
    &lt;li&gt;Das Blog&lt;/li&gt;
    &lt;li&gt;Subtext&lt;/li&gt;
    &lt;li&gt;SingleUserBlog&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
你能够在&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=BlogML&amp;amp;ReleaseId=171"&gt;这里下载&lt;/a&gt; BlogML 2.0.&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/49.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/25/49.aspx</guid>
            <pubDate>Wed, 25 Oct 2006 11:15:04 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/49.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/25/49.aspx#feedback</comments>
            <slash:comments>8664</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/49.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/49.aspx</trackback:ping>
        </item>
        <item>
            <title> Asp.Net Forums2配置文件(web.config)简要说明 </title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx</link>
            <description>&lt;span style="color: rgb(0, 0, 0);"&gt;主要部分：&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;forums &lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;defaultProvider&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="SqlForumsProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     // 要使用的数据提供者类&lt;br /&gt;
            defaultLanguage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="zh-CN"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      // 网站使用的默认语言&lt;br /&gt;
            forumFilesPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="/"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 // 论坛根路径&lt;br /&gt;
            disableEmail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="true"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 // 是否禁用邮件发送,依附于disableThreading&lt;br /&gt;
            disableIndexing&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                          // 是否禁用索引(要使用搜索功能,必须启用)&lt;br /&gt;
                                                                             // 依附于disableThreading    &lt;br /&gt;
            disableThreading&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      // 是否禁用后台线程运行&lt;br /&gt;
            threadIntervalStats&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="15"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       // 后台帖子索引运行间隔时间(分钟)&lt;br /&gt;
            threadIntervalEmail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="3"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                         // 后台邮件发送运行间隔时间(分钟)&lt;br /&gt;
            passwordEncodingFormat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="unicode"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // 密码编码格式&lt;br /&gt;
            allowAutoUserRegistration&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // &lt;br /&gt;
            adminWindowsGroup&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Administrators"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            assignLocalAdminsAdminRole&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            smtpServerConnectionLimit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="-1"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            enableLatestVersionCheck&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // 允许版本检查&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;add &lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "SqlForumsProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;             // 使用Sql Server数据提供者类&lt;br /&gt;
            type &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "AspNetForums.Data.SqlDataProvider, AspNetForums.SqlDataProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;br /&gt;
                                                                     // Sql Server数据提供者类的程序集&lt;br /&gt;
            connectionString &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "server={0};database={1};uid={2};pwd={3}"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
                    // {0}数据库服务器名或IP；{1}数据库名称；{2}登录数据库用户ID；&lt;br /&gt;
                    // {3}登录数据库密码.&lt;br /&gt;
            databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "dbo"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    // 数据库所有者，dbo或{2}&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/31.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 23:39:23 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/31.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx#feedback</comments>
            <slash:comments>468</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/31.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/31.aspx</trackback:ping>
        </item>
        <item>
            <title> Asp.Net Forums 2.0.1数据库表简要说明</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx</link>
            <description>&lt;p&gt;Asp.Net Forums 2.0.1数据库表简要说明&lt;/p&gt;
&lt;p&gt;[表]&lt;/p&gt;
&lt;p&gt;forums_AnonymousUsers&lt;br /&gt;
匿名用户&lt;br /&gt;
 forums_BlockedIpAddresses&lt;br /&gt;
禁止的IP地址&lt;br /&gt;
 forums_Censorship&lt;br /&gt;
脏字过滤&lt;br /&gt;
 forums_CodeScheduleType&lt;br /&gt;
待查&lt;br /&gt;
 forums_CodeServiceType&lt;br /&gt;
待查&lt;br /&gt;
 forums_DisallowedNames&lt;br /&gt;
禁止用户注册的用户名&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_EmailQueue&lt;br /&gt;
发送邮件序列&lt;br /&gt;
 forums_Exceptions&lt;br /&gt;
系统异常&lt;br /&gt;
 forums_ForumGroups&lt;br /&gt;
论坛组&lt;br /&gt;
 forums_ForumPermissions&lt;br /&gt;
论坛权限&lt;br /&gt;
 forums_ForumPingback&lt;br /&gt;
待查&lt;/p&gt;
&lt;p&gt;forums_Favorites&lt;br /&gt;
用户收藏夹&lt;br /&gt;
 forums_Forums&lt;br /&gt;
论坛&lt;br /&gt;
 forums_ForumsRead&lt;br /&gt;
论坛用户读取标记&lt;br /&gt;
 forums_Images&lt;br /&gt;
待查&lt;br /&gt;
 forums_Messages&lt;br /&gt;
论坛消息,待查,并非用户相互发送的消息&lt;/p&gt;
&lt;p&gt; forums_ModerationAction&lt;br /&gt;
论坛管理操作列表(审核,编辑帖子,移动贴子,删除贴子,锁定,精华等)&lt;br /&gt;
 forums_ModerationAudit&lt;br /&gt;
论坛操作检查,与下表对应&lt;/p&gt;
&lt;p&gt;forums_Moderators&lt;br /&gt;
论坛版主&lt;/p&gt;
&lt;p&gt; forums_PostAttachments&lt;br /&gt;
论坛贴子附件&lt;br /&gt;
 forums_PostEditNotes&lt;br /&gt;
贴子编辑记录&lt;br /&gt;
 forums_PostRating&lt;br /&gt;
主题评估&lt;br /&gt;
 forums_Posts&lt;br /&gt;
论坛贴子&lt;br /&gt;
 forums_PostsArchive&lt;br /&gt;
论坛文章(目前版本未使用)&lt;br /&gt;
 forums_PrivateMessages&lt;br /&gt;
论坛内部会员消息&lt;br /&gt;
 forums_Ranks&lt;br /&gt;
用户等级&lt;br /&gt;
 forums_Reports&lt;br /&gt;
论坛报告(目前版本未使用)&lt;br /&gt;
 forums_Roles&lt;br /&gt;
论坛角色&lt;br /&gt;
 forums_SearchBarrel&lt;br /&gt;
论坛搜索关键字&lt;br /&gt;
 forums_SearchIgnoreWords&lt;br /&gt;
论坛搜索忽略关键字(目前版本未使用)&lt;br /&gt;
 forums_ServiceSchedule&lt;br /&gt;
论坛服务计划(目前版本未使用)&lt;br /&gt;
 forums_Services&lt;br /&gt;
论坛服务(目前版本未使用)&lt;br /&gt;
 forums_SiteSettings&lt;br /&gt;
站点设置&lt;br /&gt;
 forums_Smilies&lt;br /&gt;
论坛表情符号&lt;br /&gt;
 forums_Styles&lt;br /&gt;
论坛风格(类CSS设置) (目前版本未使用)&lt;/p&gt;
&lt;p&gt; forums_Threads&lt;br /&gt;
论坛主题&lt;br /&gt;
 forums_ThreadsRead&lt;br /&gt;
用户已读主题&lt;br /&gt;
 forums_TrackedForums&lt;br /&gt;
论坛跟踪(待查)&lt;br /&gt;
 forums_TrackedThreads&lt;br /&gt;
论坛主题跟踪(订阅列表)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_UserAvatar&lt;br /&gt;
用户头像&lt;br /&gt;
 forums_UserProfile&lt;br /&gt;
用户配置选项&lt;br /&gt;
 forums_Users&lt;br /&gt;
论坛用户&lt;br /&gt;
 forums_UsersInRoles&lt;br /&gt;
用户角色&lt;br /&gt;
 forums_UsersOnline&lt;br /&gt;
注册用户在线列表&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_ValueGroups&lt;br /&gt;
精华区域管理&lt;br /&gt;
 forums_Version&lt;br /&gt;
论坛版本信息&lt;br /&gt;
 forums_Vote&lt;br /&gt;
用户投票&lt;br /&gt;
 forums_VoteOptions&lt;br /&gt;
投票选项&lt;br /&gt;
 forums_statistics_Site&lt;br /&gt;
论坛统计信息&lt;br /&gt;
 forums_statistics_User&lt;br /&gt;
论坛会员列表统计&lt;/p&gt;
&lt;br /&gt;
 nntp_Newsgroups&lt;br /&gt;
NNTP设置,待查&lt;br /&gt;
 nntp_Posts&lt;br /&gt;
NNTP设置,待查&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/30.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 23:16:52 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/30.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx#feedback</comments>
            <slash:comments>421</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/30.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/30.aspx</trackback:ping>
        </item>
        <item>
            <title> SqlServer数据访问帮助类 for .Net 2.0</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/29.aspx</link>
            <description>&lt;p&gt;=================================================================&lt;br /&gt;
// SqlServer数据访问帮助类&lt;br /&gt;
=================================================================&lt;br /&gt;
// 名字空间: hiDotNet.Data&lt;br /&gt;
// 描    述: SqlServer数据访问帮助类.&lt;br /&gt;
// 日    期: 2006年3月14日&lt;br /&gt;
// 修订日期: 2006年3月17日&lt;br /&gt;
// 联    系: &lt;a href="mailto:venjiang@msn.com"&gt;venjiang@msn.com&lt;/a&gt;&lt;br /&gt;
// 说    明: 实现SqlServer的快速访问&lt;br /&gt;
=================================================================&lt;br /&gt;
// 版权所有,hiDotNet.com 更多内容请访问: &lt;a href="http://www.hidotnet.com/"&gt;www.hiDotNet.com&lt;/a&gt;&lt;br /&gt;
=================================================================&lt;/p&gt;
&lt;p&gt;[示例运行环境]&lt;br /&gt;
.Net Framework 2.0&lt;br /&gt;
Sql Server 2000&lt;/p&gt;
&lt;p&gt;[步骤]&lt;br /&gt;
1.执行SetupDataBase.bat,安装示例数据库所需内容.&lt;br /&gt;
2.使用Vs2005打开SqlHelperTest.csproj,编译运行.&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff0000"&gt;欢迎测试反馈.&lt;br /&gt;
&lt;/font&gt;&lt;font color="#000000"&gt;示例截图:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;img alt="" src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_SqlHelper_Example.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;帮助&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;img alt="" src="http://blog.hidotnet.com/images/blog_hidotnet_com/venjiang/12/r_SqlHelp_Help.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;a href="http://bbs.hidotnet.com/PostAttachment.aspx?PostID=22380&amp;amp;AttachmentID=736" target="_blank"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;点击下载&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/29.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 23:06:54 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/29.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/29.aspx#feedback</comments>
            <slash:comments>449</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/29.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/29.aspx</trackback:ping>
        </item>
        <item>
            <title> 以增加收藏夹功能为实例，解析asp.net forums2结构流程及组件设计</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/28.aspx</link>
            <description>&lt;p&gt;其实asp.net forums2就是像搭积木，现以收藏夹功能实例看一下asp.net forums的结构及组件设计，希望给朋友以参考。&lt;br /&gt;
&lt;br /&gt;
示例：&lt;strong&gt;帖子收藏功能&lt;/strong&gt;(by venjiang &lt;span style="color: rgb(0, 0, 0);"&gt;20040912&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) √&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;一.增加资源文件项目&lt;/strong&gt;&lt;br /&gt;
修改Web\Languages\zh&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;CN\Resources.xml，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹 &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite_Title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;收藏夹&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite_Description&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;我收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹－结束 &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;strong&gt;二．增加站点url&lt;br /&gt;
&lt;/strong&gt;修改E:\WWW\cnforums0804\Web\SiteUrls.config，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;url name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user_MyFavorite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; path&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/User/MyFavorite.aspx&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;strong&gt;三．增加属性&lt;br /&gt;
&lt;/strong&gt;修改Components\Components\SiteUrls.cs，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 收藏夹 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MyFavorite &lt;br /&gt;
        {&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; paths[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;四.修改相应的界面文件&lt;br /&gt;
&lt;/strong&gt;修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyForums.ascx，&lt;br /&gt;
修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PrivateMessages.ascx&lt;br /&gt;
修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\Skin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;EditProfile.ascx&lt;br /&gt;
&lt;br /&gt;
在UserPrivateMessages后增加&lt;br /&gt;
   &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td id&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ControlPanelTabInactive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; align&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;center&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; nowrap&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;a href&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;%=Globals.GetSiteUrls().MyFavorites%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;%=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ResourceManager.GetString(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorites_Title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;%&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
修改：  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td colspan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ControlPanelTabLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;img width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; alt&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;跨跃列数&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;五.增加相应文件&lt;br /&gt;
&lt;br /&gt;
表现层1，收藏夹主视图&lt;br /&gt;
&lt;/strong&gt;在web&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;目录增加MyFavorites.aspx，最终用户页面&lt;br /&gt;
在Controls\Views目录增加MyFavoritesView.cs,页面视图服务器控件（主要表现为页面处理逻辑）&lt;br /&gt;
界面视图：在Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins中增加View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorites.ascx 收藏夹视图（主要表现为页面UI）&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;组件&lt;/strong&gt;&lt;br /&gt;
在Components目录增加Favorites.cs（相当于业务逻辑层，加s表业务处理），此例中未在子目录Components&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Components中增加Favorite.cs(相当于业务实体层，未加s表实体)，因并不需要，完整的Asp.net forums模式应该还有这一层。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;表现层2，用户点击收藏按钮后呈现的UI&lt;br /&gt;
&lt;/strong&gt;（这个比较简单）&lt;br /&gt;
在web目录增加MyFavoritesAdd.aspx文件&lt;br /&gt;
处理加入收藏时服务器控件, 在Controls目录增加MyFavoritesAdd.cs（页面处理逻辑）&lt;br /&gt;
在Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins中增加Skin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavoritesAdd.ascx将主题加入收藏时的视图(UI)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;六．数据库&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;增加表forums_Favorites&lt;/strong&gt;&lt;br /&gt;
UserID    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
ThreadID    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
FavoriteDate    datetime    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;8&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;创建存储过程forums_Favorites_CreateDelete&lt;/strong&gt;&lt;br /&gt;
CREATE  procedure forums_Favorites_CreateDelete&lt;br /&gt;
(&lt;br /&gt;
    @UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;
    @ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;
    @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
)&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
&lt;br /&gt;
IF @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Does the user already have the ability to see &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; thread&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
    IF EXISTS (SELECT UserID FROM forums_Favorites WHERE UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @UserID and ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @ThreadID)&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
    INSERT INTO&lt;br /&gt;
        forums_Favorites&lt;br /&gt;
    VALUES&lt;br /&gt;
        (&lt;br /&gt;
            @UserID,&lt;br /&gt;
            @ThreadID,&lt;br /&gt;
            getdate()&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    RETURN&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
IF @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
    DELETE&lt;br /&gt;
        forums_Favorites&lt;br /&gt;
    WHERE&lt;br /&gt;
        UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @UserID AND&lt;br /&gt;
        ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @ThreadID&lt;br /&gt;
    RETURN&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
GO&lt;br /&gt;
SET QUOTED_IDENTIFIER OFF &lt;br /&gt;
GO&lt;br /&gt;
SET ANSI_NULLS ON &lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;七.数据处理&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.Components\Provider\ForumsDataProvider.cs增加&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CreateFavorites(ArrayList users, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID);&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DeleteFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, ArrayList deleteList);&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;. Data Providers\SqlDataProvider\SqlDataProvider.cs增加实现方法&lt;/strong&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; #### 收藏夹 #### by venjiang 0912&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 追加主题到收藏夹&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="userID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用户ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="threadID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;主题ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CreateFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID) &lt;br /&gt;
        {&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection myConnection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) &lt;br /&gt;
            {&lt;br /&gt;
                SqlCommand myCommand &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites_CreateDelete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, myConnection);&lt;br /&gt;
                myCommand.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Action&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Bit).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DataProviderAction.Create;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
&lt;br /&gt;
                myConnection.Open();&lt;br /&gt;
                myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID;&lt;br /&gt;
&lt;br /&gt;
                myCommand.ExecuteNonQuery();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 从收藏夹中删除主题&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="userID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用户ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="deleteList"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;删除列表&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DeleteFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, ArrayList deleteList) &lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Create Instance of Connection and Command Object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection myConnection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) &lt;br /&gt;
            {&lt;br /&gt;
                SqlCommand myCommand &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites_CreateDelete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, myConnection);&lt;br /&gt;
                myCommand.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Action&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DataProviderAction.Delete;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Open the connection&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                myConnection.Open();&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add multiple times&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; deleteList) &lt;br /&gt;
                {&lt;br /&gt;
                    myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID;&lt;br /&gt;
&lt;br /&gt;
                    myCommand.ExecuteNonQuery();&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.在Data Providers\SqlDataProvider\SqlDataProvider.cs修改GetThreads方法,以支持收藏功能&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; #### Threads ####&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加贴子收藏 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadSet GetThreads(&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, &lt;br /&gt;
                DateTime threadsNewerThan, &lt;br /&gt;
                SortThreadsBy sortBy, &lt;br /&gt;
                SortOrder sortOrder, &lt;br /&gt;
                ThreadStatus threadStatus, &lt;br /&gt;
                ThreadUsersFilter userFilter, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; activeTopics,&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unreadOnly, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; returnRecordCount,&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加新参数，是否仅显示收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; favoriteOnly&lt;br /&gt;
            )&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Create Instance of Connection and Command Object&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection connection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) {&lt;br /&gt;
                SqlCommand command &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Threads_GetThreadSet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, connection);&lt;br /&gt;
                command.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                ThreadSet threadSet             &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadSet();&lt;br /&gt;
                StringBuilder sqlCountSelect    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SELECT count(T.ThreadID) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);      &lt;br /&gt;
                StringBuilder sqlPopulateSelect &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SELECT T.ThreadID, HasRead = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder fromClause        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Threads T &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder whereClause       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WHERE &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder orderClause       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ORDER BY &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加收藏判断 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (favoriteOnly &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                {&lt;br /&gt;
                    fromClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites Fav &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Ensure DateTime is min value for SQL&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                threadsNewerThan &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlDataProvider.GetSafeSqlDateTime(threadsNewerThan);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Construct the clauses&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Forums&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Contrain the selectivness to a set of specified forums. The ForumID is our&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; clustered index so we want this to be first&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(forumID);&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Get a list of all the forums the user has access to&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    ArrayList forumList &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Forums.GetForums(userID, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumList.Count; i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ( ((Forum) forumList[i]).ForumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ( (i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumList.Count) {&lt;br /&gt;
                                whereClause.Append( ((Forum) forumList[i]).ForumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; OR T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                                whereClause.Append( ((Forum) forumList[i]).ForumID );&lt;br /&gt;
                                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                    }&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;T.ForumID = 0 AND P.UserID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(userID);&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND P.ThreadID = T.ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    fromClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_PrivateMessages P &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Date&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND StickyDate &amp;gt;= '&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                whereClause.Append( threadsNewerThan.ToString( System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern ));&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; '&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constain Approval&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND IsApproved = 1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Read/Unread&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SELECT &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.HasReadPost(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    sqlPopulateSelect.Append(userID);&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, T.ThreadID, T.ForumID)) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (unreadOnly) {&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.HasReadPost(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        whereClause.Append(userID);&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, T.ThreadID, T.ForumID) = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    }&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Unanswered topics&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (unansweredOnly) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND TotalReplies = 0 AND IsLocked = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Active topics&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 热门贴子&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND TotalReplies &amp;gt; 2 AND IsLocked = 0 AND TotalViews &amp;gt; 50&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 尽显示收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (favoriteOnly) &lt;br /&gt;
                {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND T.ThreadID = Fav.ThreadID AND Fav.UserID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(userID);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Users filter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.All) &lt;br /&gt;
                {&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsParticipatedIn) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsNotParticipatedIn)) {&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        whereClause.Append(userID);&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsNotParticipatedIn)&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; NOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; IN (SELECT UserID FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Posts P WHERE P.ThreadID = T.ThreadID)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsByNonAnonymousUsers)&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND 0 NOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IN (SELECT UserID FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Posts P WHERE ThreadID = T.ThreadID AND P.UserID = 0)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Thread Status&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (threadStatus &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.NotSet) {&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (threadStatus) {&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Open:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Closed:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Resolved:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Order By&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortBy) {&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.LastPost:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending) {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly)&lt;br /&gt;
                                orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ThreadDate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IsSticky, StickyDate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly)&lt;br /&gt;
                                orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ThreadDate DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IsSticky DESC, StickyDate DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        }&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalRatings:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalRatings&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalRatings DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
            &lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalReplies:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalReplies&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalReplies DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.ThreadAuthor:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PostAuthor DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PostAuthor&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalViews:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalViews&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalViews DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Build the SQL statements&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                sqlCountSelect.Append(fromClause.ToString());&lt;br /&gt;
                sqlCountSelect.Append(whereClause.ToString());&lt;br /&gt;
&lt;br /&gt;
                sqlPopulateSelect.Append(fromClause.ToString());&lt;br /&gt;
                sqlPopulateSelect.Append(whereClause.ToString());&lt;br /&gt;
                sqlPopulateSelect.Append(orderClause.ToString());&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add Parameters to SPROC&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ForumID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@PageSize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@sqlCount&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.NVarChar, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sqlCountSelect.ToString();&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@sqlPopulate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.NVarChar, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sqlPopulateSelect.ToString();&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ReturnRecordCount&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Bit).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; returnRecordCount;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Execute the command&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                connection.Open();&lt;br /&gt;
                SqlDataReader dr &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; command.ExecuteReader();&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Populate the ThreadSet&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (dr.Read()) {&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add threads&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                        threadSet.Threads.Add( ForumsDataProvider.PopulatePrivateMessageFromIDataReader (dr) );&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                        threadSet.Threads.Add( ForumsDataProvider.PopulateThreadFromIDataReader(dr) );&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Do we need to return record count?&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (returnRecordCount) {&lt;br /&gt;
&lt;br /&gt;
                    dr.NextResult();&lt;br /&gt;
&lt;br /&gt;
                    dr.Read();&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Read the total records&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    threadSet.TotalRecords &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) dr[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Get the recipients if this is a request for&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; the private message list&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (dr.NextResult()) ) {&lt;br /&gt;
                    Hashtable recipientsLookupTable &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;