ASP.NET 2.0数据教程之四十七:使用SqlDataSource控件查询数据
内建的数据Web控件的特性以及SqlDataSource控件 通常来说,数据Web控件所固有的特性——如分页、排序、编 辑、删除以及插入等等——是不关心是否使用了数据源控件的。也就 是说,GridView可以利用其内建的各种操作,而不用理会是否使用了 ObjectDataSource或SqlDataSource。然而,数据Web控件的某些特性却对是否使 用了数据源控件或数据源控件的配置是敏感的。 例如,在教程大数据量时 提高分页的效率中我们讨论过,默认情况下,数据Web控件内建的分页逻辑从指定 的数据源返回所有的记录,然后根据给定的页码以及每页显示的条数显示一个正 确的子集。在对一个较大的记录集分页的时候,这个模型是非常低效的。幸运的 是,ObjectDataSource可以被配置为支持自定义分页,以精确的返回需要显示的 记录子集。然而,SqlDataSource却缺少用于实现自定义分页的属性。 SqlDataSource中出现了另外的关于分页和排序的小东西。默认情况下, SqlDataSource返回的数据将通过GridView来分页和排序。为了说明这个,请在 Querying.aspx中的GridView的智能标签中勾上“允许分页”和 “允许排序”,看看是不是像我们预期的那样? 分页和排序都 如预期的那样工作了,这是因为SqlDataSource把获取到的数据放到了一个弱类型 的DataSet中。查询所返回记录的总数——实现分页所不可或缺的部分 ——可通过这个DataSet弄清楚。此外,DataSet的结果还可以通过 DataView来进行排序。在GridView需要对数据进行分页或排序时,这些能力将自 动的被SqlDataSource使用。 SqlDataSource可以被配置为返回一个 DataReader而不是DataSet,只需要将其DataSourceMode属性从DataSet(默认) 改成DataReader即可。在需要将SqlDataSource的结果传递给现有的需要 DataReader的代码时,使用DataReader可能是比较好的做法。而且,由于 DataReader是比DataSet简单很多的对象,所以它们能提供更好的性能。不过,如 果你做了这样的修改,数据Web控件将不能再进行分页,因为SqlDataSource不能 准确的获知到底有多少记录被返回,当然也不能进行排序,因为DataReader根本 就没有提供任何可用于对返回的数据进行排序的技术。 第四步:使用自定 义SQL语句或存储过程 配置SqlDataSource控件时,用于返回数据的查询可 以通过两种方式进行指定,一个是自定义SQL语句或存储过程,另一个是指定某个 已经存在的表或视图的列。在第二步中,我们选择了后者,现在,我们来试试自 定义SQL语句的方式。 向Querying.aspx添加另外一个GridView控件,并在 其智能标签的下拉列表中选择“创建一个新的数据源”。然后声明数 据将从一个数据库中弄出来——这将会创建一个新的SqlDataSource控 件,我们给它命名为ProductsWithCategoryInfoDataSource。 图十二:创建一个新的名为ProductsWithCategoryInfoDataSource的 SqlDataSource控件 下一个页面要我们指定一个数据库。像我们在图七中 所做的那样,从下拉列表中选择NORTHWINDConnectionString,然后点击“ 下一步”。在“配置Select语句”页,选择“指定一个自 定义SQL语句或存储过程”单选框,并点击“下一步”。这时会 显示“定义自定义语句或存储过程”页,这里提供了SELECT、UPDATE 、INSERT以及DELETE等标签。在每一个标签下面,你都可以在Textbox中输入一个 SQL语句或在下拉列表中选择一个存储过程。本教程中,我们还是关注输入自定义 SQL语句,下一个教程中将包含一个使用存储过程的例子。 图十三:输入一个自定义SQL语句或选择一个存储过程 自定义 SQL语句可以完全通过手写的方式输入到Textbox中,也 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |