当前位置: 网学 > 编程文档 > SQL SERVER > 正文

基于业务对象的筛选

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式

引言

可能大家对SQL语句太过熟悉了,也可能虽然已经从Asp过度到了Asp.Net时代,但是asp的观念没有发生太大变化。结果就是我们将应用程序大部分的逻辑都交给了数据库去完成,忘记了.Net Framework提供给我们灵活强大的数据操控能力。比如说,当我们需要对数据进行筛选的时候,我们想到的是“Where”子句,而不是List<T>.FindAll();当我们需要对数据进行排序的时候,我们想到的是“Order By”子句,而不是List<T>.Sort();当我们需要对数据进行分页的时候我们想到的是存储过程,而不是List<T>.GetRange()。

当然,让数据库去完成这些工作在很多情况下效率会很高,尤其是在数据量较大的时候。然而在数据量不大的情况下,一次将所有数据取出,然后缓存在服务器上,对于以后的排序、筛选、分页请求仅针对缓存进行,则会使效率提高很多。

没有哪种方法绝对好或者绝对不好,都有一个适用范围。本文将介绍的也是一样,当数据量非常大的时候,我们可能不仅希望数据库先用“Where”子句进行筛选,进而再一次筛选只返回当前页需要显示的数据条目。

本文仅仅提出同一个问题的另一种解决思路,何时使用根据情况而定。

你是否还在拼装SQL语句?筛选数据的传统方式

对数据进行筛选应该是最常见不过的操作了,我们以NorthWind数据库的Orders订单表为例说明。如果我们需要对它按年、月、日的任意组合进行筛选,你大概会怎么做呢?我想应该是这样的:

  1. 在页面上创建三个下拉框,用于对年、月、日的选择。
  2. 用户第一次访问页面,显示所有数据。此时有一次对数据库的访问,返回全部数据,SQL语句诸如“Select * From Orders”。
  3. 用户选择年、月、日中的任意一个,产生PostBack。
  4. 根据用户的选择拼装一个SQL语句,诸如“Where Year(OrderDate) = @Date and Month(OrderDate)= @Month”。
  5. 将SQL语句发送到数据库,数据库返回查询结果,显示到用户界面。
  6. 如此反复。

可以看到,在上面的模式中,为了根据用户的选择显示不同的数据,每次用户的操作都要进行对数据库的一次访问,我们看一下具体的实现是怎样的。

拼装SQL语句的典型实现方式

首先,创建一个页面(SqlApproach.aspx),在页面上放置三个DropDownList控件,一个GridView控件,以及一个ObjectDataSource控件,如同下图所示:

在 App_Code 文件夹中根据Orders表创建业务对象Order(位于Order.cs)。

public class Order
{
    private int orderId;            // 订单Id
    private string customerId;          // 用户Id
    private DateTime orderDate;         // 下单日期
    private string country;             // 国家

    public int OrderId {
       get { return orderId; }
       set { orderId = value; }
    }

    public string CustomerId
    {
       get { return customerId; }
       set { customerId = value; }
    }

    public DateTime OrderDate
    {
       get { return orderDate; }
       set { or

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号