牛腩新闻发布系统-分页SQL语句详解&&实例
【摘要】
前言 牛腩新闻发布系统是目前接触的第一个b/s项目,所以也是第一次应用分页的这个功能和使用这个技术点。分页从原理上分为真分页和假分页两种。今天详细介绍真分页的SQL语句,以及使用到的一些控件。
目录...
前言
牛腩新闻发布系统是目前接触的第一个b/s项目,所以也是第一次应用分页的这个功能和使用这个技术点。分页从原理上分为真分页和假分页两种。今天详细介绍真分页的SQL语句,以及使用到的一些控件。
分页SQL语句
select * from (select ROW_NUMBER() over
(order by id desc) as row,T.* from news T) as TT
where TT.row between @startIndex and @endIndex
- 1
- 2
- 3
between //用于查询两者之间内容的关键字
@startIndex// 开始范围
@endIndex//结束的范围
格式
between @startIndex and @endIndex
- 1
表示查询内容是在@startIndex 和 @endIndex之间(包含@startIndex和 @endIndex)
SQL语句拆解
降序
给新闻表里"id"列进行降序,并且同时产生一个临时表用于后续查询。
代码
(select ROW_NUMBER() over (order by id desc) as row,T.*
from news T)
- 1
- 2
结果
设置别名
给上一步降序之后产生的临时表设置一个别名“TT”,方便再次调用。
代码
查询上一步产生的临时表,并且设置别名。
select * from (select ROW_NUMBER() over
(order by id desc) as row,T.* from news T) as TT
- 1
- 2
最后完整SQL语句
select * from (select ROW_NUMBER() over
(order by id desc) as row,T.* from news T) as TT
where TT.row between @startIndex and @endIndex
- 1
- 2
- 3
使用 where TT.row between @startIndex and @endIndex作为查询条件
应用实例-牛腩新闻管理分页显示
代码
Web
控件
AspNetPager2
web前端
<webdiyer:AspNetPager ID="AspNetPager2" runat="server" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" OnPageChanged="AspNetPager2_PageChanged" PageSize="5" AlwaysShow="true"></webdiyer:AspNetPager>
- 1
web后端
加载代码
protected void Page_Load(object sender, EventArgs e)
{
// 判断session里面是否存在管理员
if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
{
// 已登陆
if (!Page.IsPostBack)
{
DataTable dt = new NewsManager().SelectAll();
AspNetPager2.RecordCount = dt.Rows.Count;//获取行数
BindNews();//绑定和显示分页内容
}
}
else
{
// 未登陆
Response.Redirect("login.aspx");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
绑定新闻列表
#region 绑定新闻列表
private void BindNews()
{
int startIndex = AspNetPager2.StartRecordIndex;
int endIndex = AspNetPager2.EndRecordIndex;
DataTable dt =new NewsManager().SelectToPage(startIndex, endIndex);
repNews.DataSource = dt;
repNews.DataBind();
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
分页控件改变事件
#region 分页按钮改变事件
/// <summary>
/// 分页按钮改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void AspNetPager2_PageChanged(object sender, EventArgs e)
{
BindNews();//绑定和显示分页内容
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
BLL
#region 选择全部新闻
public DataTable SelectAll() {
return newsDAO.SelectAll();
}
#endregion
- 1
- 2
- 3
- 4
- 5
#region
/// <summary>分页选择新闻
///
/// </summary>
/// <param name="startIndex">
选定页的第一条新闻索引</param>
/// <param name="endIndex">
选定页的最后一条新闻索引</param>
/// <returns>
选定页的新闻内容
</returns>
public DataTable SelectToPage(int startIndex,
int endIndex)
{
DAL.NewsDAO nd = new DAL.NewsDAO();
return nd.SelectToPage(startIndex, endIndex);
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
DAL
#region 查询所有新闻
/// <summary>
/// 查询所有新闻
/// </summary>
/// <returns></returns>
public DataTable SelectAll() {
DataTable dt = new DataTable();
string sql = "select * from news";
dt = new SQLHelper().ExecuteQuery(sql,CommandType.Text);
return dt;
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
#region 分页选择新闻
/// <summary>
/// 分页选择新闻
/// </summary>
/// <param name="startIndex">
选定页的第一条新闻索引</param>
/// <param name="endIndex">
选定页的最后一条新闻索引</param>
/// <returns>选定页的新闻内容</returns>
public DataTable SelectToPage(int startIndex,
int endIndex)
{
DataTable dt = new DataTable();
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter ("@startIndex",startIndex ),
new SqlParameter("@endIndex",endIndex)
};
string sql = "select * from
(select ROW_NUMBER()
over (order by id desc)
as row,T.* from news T)
as TT where TT.row between
@startIndex and @endIndex";
dt =sqlheper.ExecuteQuery(sql, paras,
CommandType.Text);
return dt;
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
结果
文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。
原文链接:kangshihang.blog.csdn.net/article/details/107013329
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)