第七城市,电脑技术学院,与您一起学习的伙伴,您身边的教程中心

第七城市 logo
匿名投稿 投稿指南 RSS订阅
您现在的位置: 第七城市 >> 教程频道 >> 数据库区 >> MS SQL >> 正文

数据库组件 Hxj.Data

2010-2-1来源:不详 作者:佚名 点击:
分页在前面好几节中的列子中已经出现,现在在详细讲解一下。

有三种方法去实现:

1、Top(int topCount) 方法

在sqlserver和msaccess中其实就是top , 在oracle通过rownum实现。



2、From(int startIndex, int endIndex)

从startIndex条到endIndex条之间的记录数。



3、Page(int pageSize, int pageIndex)

每页pageSize条,第pageIndex页



下面就依次对这三个方法举例说明。



top方法:

DbSession.Default.From<Products>()
                .Top(10)
                .ToList();该查询时查询products表中的前10条记录,生成的sql语句如下:(如何输出查看组件生成的sql)

Text: SELECT TOP 10 * FROM [Products]  

from方法:
DbSession.Default.From<Products>()
                .From(3, 8)
                .ToList();查找第3条到第8条的数据(包括第3条和第8条),生成的sql语句如下:

Text: SELECT * FROM ( SELECT TOP 6 * FROM ( SELECT TOP 8 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC  

page方法:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .ToList();查询每页10条的第2页数据,sql语句如下:
Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC

可以看出from方法和page方法生成的sql语句是格式是一样的,其实page方法最终还是调用from方法,
如果from的startIndex参数等于1就会调用top方法来查询。

默认情况下我们并没有设置排序,组件则会自动添加一个排序,如果有主键则选主键排序,不然选一个其他列排序。

当然在很多情况下我们是需要设置哪些列排序的。
例如:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .OrderBy(Products._.UnitPrice.Desc)
                .Where(Products._.CategoryID == 2)
                .ToList();查询条件是categoryid等于2,按照unitprice倒叙排序,每页10条的第2页数据。
生成的sql如下:
Text: SELECT * FROM ( SELECT TOP 2 * FROM [Products] WHERE [Products].[CategoryID] = @bee7551993404c8592f07f9b01710bb5 ORDER BY [Products].[UnitPrice] ASC) AS temp_table ORDER BY [UnitPrice] DESC Parameters: @bee7551993404c8592f07f9b01710bb5[Int32] = 2 这样的sql语句是不是出乎意料啊,原来符合条件的查询第二页只有2条数据,所以查询的时候就直接unitprice正序top 2就完结了。

我们把条件去掉再看看:
DbSession.Default.From<


责任编辑:sanda
推荐文章
| 关于我们 | 广告服务 | 用户条款 | 联系站长 | 版权申明 |