设为首页 加入收藏

TOP

ADO调用分页查询存储过程(一)
2019-09-02 23:56:06 】 浏览:44
Tags:ADO 调用 查询 存储 过程

 

一、分页存储过程

----------使用存储过程编写一个分页查询-----------------------
set nocount off  --关闭SqlServer消息

--set nocount on  --开启SqlServer消息

go
create proc usp_getMyStudentsDataByPage

--输入参数
@pagesize int=7,--每页记录条数
@pageindex int=1,--当前要查看第几页的记录

--输出参数
@recordcount int output,--总的记录的条数
@pagecount int output --总的页数
as
begin
--1.编写查询语句,把用户要的数据查询出来
select
t.fid,
t.fname,
t.fage,
t.fgender,
t.fmath,
t.fclassid,
t.fbirthday
from (select *,rn=row_number() over(order by fid asc) from MyStudent) as t
where t.rn between (@pageindex-1)*@pagesize+1 and @pagesize*@pageindex

--2.计算总的记录条数
set @recordcount=(select count(*) from MyStudent)

--3.计算总页数
set @pagecount=ceiling(@recordcount*1.0/@pagesize)  --乘以1.0转成flot型, 然后celling “进一法”取值
end

 

--调用前定义输出参数
declare @rc int,@pc int
exec usp_getMyStudentsDataByPage @pagesize=7,@pageindex=4, @recordcount=@rc output,@pagecount=@pc output
print @rc
print @pc

 

 

二、ADO调用存储过程

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _02通过Ado.Net调用存储过程
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private int pageIndex = 1;//当前要查看的页码

        private int pageSize = 7;//每页显示的记录条数


        private int pageCount;//总页数

        private int recordCount;//总条数

        //窗体加载的时候显示第一页的数据
        private void Form1_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        private void LoadData()
        {
            //根据pageIndex来加载数据
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2014;Integrated Security=True";
            #region 1
            //using (SqlConnection conn = new SqlConnection(constr))
            //{
            //    //将sql语句变成存储过程名称
            //    string sql = "usp_getMyStudentsDataByPage";

            //    using (SqlCommand cmd = new SqlCommand(sql, conn))
            //    {
            //        //告诉SqlCommand对象,现在执行的存储过程不是SQL语句
            //        cmd.CommandType = CommandType.StoredProcedure;

            //        //增加参数(存储过程中有几个参数,这里就需要增加几个参数)
            //        //@pagesize int=7,--每页记录条数
            //        //@pageindex int=1,--当前要查看第几页的记录
            //        //@recordcount int output,--总的记录的条数
            //        //@pagecount int output --总的页数
            //        SqlParameter[] pms = new SqlParameter[] { 
            //        new SqlParameter("@pagesize",SqlDbType.Int){Value =pageSize},
            //        new SqlParameter("@pageindex",SqlDbType.Int){Value =pageIndex},
            //        new SqlParameter("@recordcount",SqlDbType.Int){ Direction=ParameterDirection.Output},
            //        new SqlParameter("@pagecount",SqlDbType.Int){Direction=ParameterDirection.Output}
            //        };
            //        cmd.Parameters.AddRange(pms);
            //        //打开连接
            //        conn.Open();
            //        //执行
            //using(SqlDataReader reader=cmd.ExecuteReader())
            //{
                //reader.Read()
            //}
            //pms[2].Value
            //    }
            //}
            #endregion

            //DataAdapter方式
            DataTable dt = new DataTable();
            using (SqlDataAdapter adapter = new SqlDataAdapter("usp_getMyStudentsDataByPage", constr))
            {
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
               SqlParameter[] pms = new SqlParameter[] { 
                   new SqlParameter("@pagesize",SqlDbType.Int){Value =pageSize},
                   new SqlParameter("@pageindex",SqlDbType.Int){Val
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇多条件搜索问题 -sql拼接与参数化.. 下一篇.net WINFORM的GDI双缓冲的实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目