sql 数据库分页
这是一个简单的分页存储过程实例,返回总记录数表和查询得出的表
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
32 |
create procedure [dbo].[goodfenye] ( @tablename varchar (200),//表名称 @pageindex int , //当前页数 @pagesize int , //每页显示的页数 @total int output , //总记录数 @search varchar (200) //查询条件 ) as begin declare @strsql varchar (2000) declare @sqlwhere varchar (1000) declare @sqltotal nvarchar (1000) if @search!= ‘‘ begin set @sqlwhere = ‘1=1 and GoodName=‘ +@search end else begin set @sqlwhere = ‘ 1=1 ‘ end set @strsql = ‘select top ‘ + cast (@pagesize as varchar (20))+ ‘ * from ‘ +@tablename + ‘ where gid not in (select top ‘ + cast (@pagesize*(@pageindex-1) as varchar (20)) + ‘ gid from ‘ +@tablename + ‘)‘ set @sqltotal= ‘select count(1) from ‘ + @tablename begin exec sp_executesql @sqltotal,N ‘@total int output‘ ,@total output //返回总页数 exec (@strsql) //返回 end end |
C#调用存储过程如下
public void databind() { int temp1 = Convert.ToInt32(lblCurrentPage.Text); DataSet ds = new System.Data.DataSet(); SqlCommand mycommand = new SqlCommand(); SqlDataAdapter asd = new SqlDataAdapter(); asd.SelectCommand = mycommand; asd.SelectCommand.Connection = conn; asd.SelectCommand.CommandText = "goodfenye"; asd.SelectCommand.CommandType = CommandType.StoredProcedure; conn.Open(); SqlParameter[] par = { new SqlParameter ("@tablename",SqlDbType.VarChar,255), new SqlParameter ("@pageindex",SqlDbType.Int), new SqlParameter ("@pagesize",SqlDbType.Int), new SqlParameter("@total",SqlDbType.Int), new SqlParameter ("@search",SqlDbType.VarChar,255) }; par[0].Value = "tabG_Goods"; par[1].Value = temp1; par[2].Value = 5; par[3].Direction = ParameterDirection.Output; par[4].Value = this.Textname.Text; foreach (SqlParameter pa in par) { asd.SelectCommand.Parameters.Add(pa); } asd.Fill(ds, "ss"); conn.Close(); this.Repeater1.DataSource = ds.Tables[1]; this.Repeater1.DataBind(); int count = Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString()); this.labeltotal.Text = count.ToString(); int j = count / 5; //页数 int i = count % 5; if (j >= 1) { if (i > 0) { j = j + 1; } } else { j = 1; } lblPageCount.Text = j.ToString(); }
不足之处请大家指正,欢迎大家和我一起探讨.net,QQ:845750322。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。