当前位置: 移动技术网 > IT编程>开发语言>.net > 使用存储过程实现分页

使用存储过程实现分页

2019年01月19日  | 移动技术网IT编程  | 我要评论

mp3下载网站,宠物虫,职业哭灵女

--创建存储过程
create proc usp_userinfo
@pagesize int=7,--每页显示条数
@pageindex int=1,--每页显示页数
@pagecount int output ,--显示总的条数
@recodnumber int output--显示总的页数
as
begin
select
u.id,
u.username,
u.userpwd,
u.usergander,
u.useraddress
from(select *,rn= row_number() over(order by id) from userinfo) as u
where u.rn between (@pageindex-1)*@pagesize+1 and @pagesize*@pageindex
--计算总的记录条数
set @pagecount=(select count(*) from userinfo)
--计算总的页数
set @recodnumber =ceiling( @pagecount*1.0/@pagesize)
end
--声明变量
declare @count int, @number int
--查询存储过程,给输出参数赋值
exec usp_userinfo @pagecount=@count output,@recodnumber=@number output
--输出结果
print @count
print @number

效果如图所示:

 

public partial class form1 : form
{
  //定义变量
  private int pagesize = 7;//当前显示的条数
  private int pageindex = 1;//当前显示第几页
  private int pagecount;//显示当前总条数
  private int recodnumber;//显示总的页数
  public form1()
  {
    initializecomponent();
  }

  private void form1_load(object sender, eventargs e)
  {
    listdata();
  }

  private void listdata()
  {
    //连接数据库
    string sqlconn = "server=.;database=testdb;uid=sa;pwd=123456";
    datatable table = new datatable();
    //数据库中的存储过程名称(usp_userinfo)
  using (sqldataadapter adapter = new sqldataadapter("usp_userinfo", sqlconn))
  {
    adapter.selectcommand.commandtype = commandtype.storedprocedure;//声明是存储过程
    sqlparameter[] parameter = new sqlparameter[]
  {
    //第一个参数必须和数据库中保持一致
    new sqlparameter("@pagesize",sqldbtype.int){ value=pagesize},
    new sqlparameter("@pageindex",sqldbtype.int){ value=pageindex},
    new sqlparameter("@pagecount", sqldbtype.int){ direction=parameterdirection.output },//在数据库中是输出参数,所以这里不能用value,必须用                direction=parameterdirection.output(表示输出)
    new sqlparameter("@recodnumber", sqldbtype.int){ direction=parameterdirection.output },

  };
    adapter.selectcommand.parameters.addrange(parameter);
    adapter.fill(table);
    //根据parameter数组的下标取到值
    pagecount = int.parse(parameter[2].value.tostring());
    recodnumber = int.parse(parameter[3].value.tostring());
    label1.text = "总条数:" + pagecount.tostring();
    label2.text = "总页数:" + recodnumber.tostring();
    label3.text = "当前页数:" + pageindex;
    //绑定数据源
    this.datagridview1.datasource = table;

  }
}

  //下一页

  private void button1_click(object sender, eventargs e)
  {
    if (pageindex == recodnumber)
    {
      this.button1.hide();
    }
    else
    {
      this.button1.show();
      this.button2.show();
      pageindex++;
      listdata();
    }

  }

    //上一页

    private void button2_click(object sender, eventargs e)
    {
      if (pageindex == 1)
      {
        this.button2.hide();
      }
      else
      {
        this.button2.show();
        this.button1.show();
        pageindex--;
        listdata();
      }
    }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网