读书:《Asp.net2.0电子商务开发实战》(四)

 

完成业务层代码

Web.conifg中设置一些值,然后取出来。没有什么好说的。

CatalogAccess.cs文件中添加


Code
public struct DepartmentDetails
    
{
        
public string Name;
        
public string Description;
}

 

再添加GetDepartmentDetails方法

Code
 1  public static DepartmentDetails GetDepartDetails(string departmentId)
 2    {
 3        DbCommand comm = GenericDataAccess.CreateCommand();
 4        comm.CommandText = "GetDepartmentDetails";
 5        DbParameter param = comm.CreateParameter();
 6        param.ParameterName = "@DepartmentID";
 7        param.Value = departmentId;
 8        param.DbType = DbType.Int32;
 9        comm.Parameters.Add(param);
10
11        DataTable table = GenericDataAccess.ExecuterSelectCommand(comm);
12        DepartmentDetails details = new DepartmentDetails();
13        if (table.Rows.Count>0)
14        {
15            details.Name = table.Rows[0]["Name"].ToString();
16            details.Description = table.Rows[0]["Description"].ToString();
17        }

18
19        return details;
20}

21
 

我们看,方法的返回值就是上面定义的结构体,OK,创建一个Comm,指定存储过程名称,定义参数,指定参数的各个必要的值,将函数添加。定义一个表,因为执行ExecuterSelectCommand方法返回一个Datatable,定义出结构。

因为这个方法是传递进入一个门类的ID,根据这个ID去查找详细信息,因此这个table中只有一行数据。我们读取时很简单。直接读出来。

if (table.Rows.Count>0)

        {

            details.Name = table.Rows[0]["Name"].ToString();

            details.Description = table.Rows[0]["Description"].ToString();

        }

目的达到了,现在我们来猜想下,以后怎么用这个函数,我想肯定是以此结构为数据源来绑定一个控件。待会看看是不是吧!嘿嘿

 

同理GetCategoryDetails完全相同。

GetProductDetails也是相同的,只是里面读取数据的代码有点不一样。

看看


Code
 1if (table.Rows.Count>0)
 2         {
 3            DataRow dr = table.Rows[0];
 4            details.Name = dr["Name"].ToString();
 5            details.Description = dr["Description"].ToString();
 6            details.Price = Decimal.Parse(dr["Price"].ToString());
 7            details.Image1FileName = dr["Image1FileName"].ToString();
 8            details.Image2FileName = dr["Image2FileName"].ToString();
 9            details.OnDepartmentPromotion = bool.Parse(dr["OnDepartmentPromotion"].ToString());
10            details.OnCatalogPromotion = bool.Parse(dr["OnCatalogPromotion"].ToString());
11        }

12

 

DataRow就是指DataTable中的一行数据。其实原理是一样的,只是换个种表达方式。我是这个觉得的。请高手指点一下。

 

然后就是GetCategoriesInDepartment方法

这个就不需要定义结构了,直接返回DatatableOK了。
Code
 1public static DataTable GetCategoriesInDepartment(string departmentId)
 2    {
 3        DbCommand comm = GenericDataAccess.CreateCommand();
 4        comm.CommandText = "GetCategoriesInDepartment";
 5
 6        DbParameter param = comm.CreateParameter();
 7        param.ParameterName = "@DepartmentID";
 8        param.Value = departmentId;
 9        param.DbType = DbType.Int32;
10        comm.Parameters.Add(param);
11
12        return GenericDataAccess.ExecuterSelectCommand(comm);
13    }

14

 

GetProductsOnCatalogPromotion方法

这个要麻烦一点,因为要实现分页。这里我换个方式,我直接在代码中加注释,可能有很多,大家只要把这个流程走一遍以后看代码就很清晰了。


Code
 1//方法参数,pageNumner页数,howManyPages总页数,总页数就是在存储过程中计算出来的,这里用Out关键字,这个就是不用在传递时就初始化。
 2   public static DataTable GetProductsOnCatalogPromotion(string pageNumner,out int howManyPages)
 3   {
 4       //创建一个comm,然后指定执行的存储过程
 5       DbCommand comm = GenericDataAccess.CreateCommand();
 6       comm.CommandText = "GetProductsOnCatalogPromotion";
 7
 8       //定义参数
 9       DbParameter param = comm.CreateParameter();
10       param.ParameterName = "@DescriptionLength";
11       param.Value = BalloonShopConfiguration.ProductDescriptionLength;
12       param.DbType = DbType.Int32;
13       comm.Parameters.Add(param);
14
15       //这些参数都是传入存储过程,给存储过程来使用的。回去看看这个存储过程需要那些参数才能完成查询
16       param = comm.CreateParameter();
17       param.ParameterName = "@PageNumber";
18       param.Value = pageNumner;
19       param.DbType = DbType.Int32;
20       comm.Parameters.Add(param);
21
22       param = comm.CreateParameter();
23       param.ParameterName = "@ProductsPerPage";
24       param.Value = BalloonShopConfiguration.ProductsPerPage;
25       param.DbType = DbType.Int32;
26       comm.Parameters.Add(param);
27
28
29       //这个参数又不一样了,它是输出的。
30       param = comm.CreateParameter();
31       param.ParameterName = "@HowManyProducts";
32       param.Direction = ParameterDirection.Output;
33       param.DbType = DbType.Int32;
34       comm.Parameters.Add(param);
35
36       //执行方法,调用存储过程,转到存储过程看看返回的是什么。
37       DataTable table = GenericDataAccess.ExecuterSelectCommand(comm);
38       //将上面那个输出参数拿出来,用C#代码表示
39       int howManyProducts = Int32.Parse(comm.Parameters["@HowManyProducts"].Value.ToString());
40       //计算出开始定义的那个out参数,赋值。
41       howManyPages = (int)Math.Ceiling((double)howManyProducts / (double)BalloonShopConfiguration.ProductsPerPage);
42
43       //返回Table
44       return table;
45   }

46

 

过程应该是清晰了,至于返回什么还可能不是很清楚。等后面用表示层表示出来就豁然开朗了。

 

GetProductsOnDepartmentPromotionGetProductsInCategory也是一样的,就不重复了。

好了,我们就把业务层完成了。

觉得这个方法不错,回头把前面的文章也改改,在代码里面加注释,不管多少,直到说清楚为止!

转载于:https://www.cnblogs.com/angeletfang/archive/2008/05/30/1210625.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET电子商务开发实战(完整版)本压缩包内包含:ASP.NET电子商务开发实战(中文版)、ASP.NET电子商务开发实战(英文版)和配书源代码三项内容。 ASP.NET电子商务开发实战(中文版)为完整版本,本资源与网上流传的ASP.NET 3.0电子商务开发实战等其他版本不同,个人添加了图书封面封底、前言、目录等内容,使资源更加完整,并添加了详细的书签,以方便阅读。 由于上传容量的限制,本压缩包分为2卷,请全部下载完后再解压。这是第2卷。 访问http://download.csdn.net/user/zgc988,可以方便查找另一卷的下载地址。 内容提要: 《ASP.NET电子商务开发实战》通过一个贯穿全书的案例,为读者提供了实用的电子商务建站指南。首先,尽可能快、低成本地设立网站并使其运转起来;其次,改进购物体验来增加收入,开发商品推荐系统鼓励顾客购买更多的商品,从而使其成为一个能够投入运行、功能齐备的网站。最后,通过增加自动化和流程化的订单处理和后台管理来降低成本,并实现自处理信用卡交易,提高利润率。通过上述3个阶段,《ASP.NET电子商务开发实战》讲述了设计和开发过程的各个方面,通读之后你将能够快速、便捷地构建出高质量、可扩展的电子商务网站。   《ASP.NET电子商务开发实战》内容系统、详实,适合作为ASP.NET初中级程序员自学和程序设计的参考手册。
ASP.NET电子商务开发实战(完整版)本压缩包内包含:ASP.NET电子商务开发实战(中文版)、ASP.NET电子商务开发实战(英文版)和配书源代码三项内容。 ASP.NET电子商务开发实战(中文版)为完整版本,本资源与网上流传的ASP.NET 3.0电子商务开发实战等其他版本不同,个人添加了图书封面封底、前言、目录等内容,使资源更加完整,并添加了详细的书签,以方便阅读。 由于上传容量的限制,本压缩包分为2卷,请全部下载完后再解压。这是第1卷。 访问http://download.csdn.net/user/zgc988,可以方便查找另一卷的下载地址。 内容提要: 《ASP.NET电子商务开发实战》通过一个贯穿全书的案例,为读者提供了实用的电子商务建站指南。首先,尽可能快、低成本地设立网站并使其运转起来;其次,改进购物体验来增加收入,开发商品推荐系统鼓励顾客购买更多的商品,从而使其成为一个能够投入运行、功能齐备的网站。最后,通过增加自动化和流程化的订单处理和后台管理来降低成本,并实现自处理信用卡交易,提高利润率。通过上述3个阶段,《ASP.NET电子商务开发实战》讲述了设计和开发过程的各个方面,通读之后你将能够快速、便捷地构建出高质量、可扩展的电子商务网站。   《ASP.NET电子商务开发实战》内容系统、详实,适合作为ASP.NET初中级程序员自学和程序设计的参考手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值