打印本文 打印本文 关闭窗口 关闭窗口
使用 ASP.NET Community Starter Kit建造网站
作者:武汉SEO闵涛  文章来源:敏韬网  点击数6105  更新时间:2009/4/23 10:44:10  文章录入:mintao  责任编辑:mintao
private string _answerText;
      private string _referenceText;
   }
}

FaqInfo类初始化时需要一个SqlDataReader类的实例。在我们下一个类中将会有数据访问的代码来创建一个SqlDataReader。

FaqUtility

按照CSK中的编码惯例,我们将把数据访问的过程都放在一个utility类的静态方法中。对应于每一个与FAQ相关的存储过程都会有一个静态方法来调用。(除了用于系统维护的存储过程之外,因为只有在站点初始化时才会用到它)。每个静态方法都需要与之相对应的参数用于传递到存储过程中去。

下面是AddFaq的方法:

public static int AddFaq(
                  string username,
                  int sectionID,
                  int topicID,
                  string question,
                  string introduction,
                  string answer,
                  string reference,
                  int moderationStatus)
{
   SqlConnection conPortal = new SqlConnection(
                             CommunityGlobals.ConnectionString);
   SqlCommand cmdAdd = new SqlCommand(
      "Community_FaqsAddFaq", conPortal);
   cmdAdd.CommandType = CommandType.StoredProcedure;
   cmdAdd.Parameters.Add("@RETURN_VALUE",
                         SqlDbType.Int).Direction =
                         ParameterDirection.ReturnValue;
   cmdAdd.Parameters.Add("@communityID",
                         CommunityGlobals.CommunityID);
   cmdAdd.Parameters.Add("@sectionID", sectionID);
   cmdAdd.Parameters.Add("@username", username);
   cmdAdd.Parameters.Add("@topicID", topicID);
   cmdAdd.Parameters.Add("@question", question);
   cmdAdd.Parameters.Add("@introduction", introduction);
   cmdAdd.Parameters.Add("@metaDescription",
      ContentPageUtility.CalculateMetaDescription(introduction));
   cmdAdd.Parameters.Add("@metaKeys",
      ContentPageUtility.CalculateMetaKeys(introduction));
   cmdAdd.Parameters.Add("@moderationStatus", moderationStatus );
   cmdAdd.Parameters.Add("@answer", SqlDbType.NText);
   cmdAdd.Parameters.Add("@reference", SqlDbType.NText);
   cmdAdd.Parameters["@answer"].Value = answer;
   cmdAdd.Parameters["@reference"].Value = reference;
 
   conPortal.Open();
   cmdAdd.ExecuteNonQuery();
   int result = (int)cmdAdd.Parameters["@RETURN_VALUE"].Value;
   SearchUtility.AddSearchKeys(conPortal, sectionID, result,
                               question, introduction);
   conPortal.Close();
   return result;
}

请注意AddFaq方法内部还调用了SearchUtility类的方法产生了有关内容的查询关键字,另外它还返回了新增对象的唯一标示符。这里CSK需要做的一个改进是在代码中增加 try catch finally来保证执行数据库连接的Close方法。虽然发生异常的可能性很小,但对于一个大容量的社区网站来说,你无法承受浪费浪费数据库连接可能带来的性能下降。

在FaqUtility中的另外两个方法是GetFaqs和GetFaqInfo。GetFaqs在SqlDataReader中循环读取记录并返回一个FaqInfo对象的ArrayList,而GetFaqInfo只返回由数据库中一条记录填充的FaqInfo对象。

public static ContentInfo GetFaqInfo(string username,
                                     int contentPageID)
{
   FaqInfo faq = null;
   SqlConnection conPortal = new SqlConnection(
      CommunityGlobals.ConnectionString);
   SqlCommand cmdGet = new SqlCommand(
      "Community_FaqsGetFaq", conPortal);
   cmdGet.CommandType = CommandType.StoredProcedure;
   cmdGet.Parameters.Add(

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 

打印本文 打印本文 关闭窗口 关闭窗口