• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ADO调用分页查询存储过程的实例讲解_实用技巧

c# 搞代码 4年前 (2022-01-09) 26次浏览 已收录 0个评论

下面小编就为大家分享一篇ADO调用分页查询存储过程的实例讲解,具有很好的参考价值,希望对大家有所帮助让大家更好的使用ADO进行分页。对ADO感兴趣的一起跟随小编过来看看吧

一、分页存储过程

----------使用存储过程编写一个分页查询-----------------------set nocount off --关闭SqlServer消息--set nocount on --开启SqlServer消息gocreate proc usp_getMyStudentsDataByPage--输入参数@pagesize int=7,--每页记录条数@pageindex int=1,--当前要查看第几页的记录--输出参数@recordcount int output,--总的记录的条数@pagecount int output --总的页数asbegin--1.编写查询语句,把用户要的数据查询出来selectt.fid,t.fname,t.fage,t.fgender,t.fmath,t.fclassid,t.fbirthdayfrom (select *,rn=row_number() over(order by fid asc) from MyStudent) as twhere 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)end --调用前定义输出参数declare @rc int,@pc intexec usp_getMyStudentsDataByPage @pagesize=7,@pageindex=4, @recordcount=@rc output,@pagecount=@pc outputprint @rcprint @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){Value =pageIndex},     new SqlParameter("@recordcount",SqlDbType.Int){ Direction=ParameterDirection.Output},     new SqlParameter("@pagecount",SqlDbType.Int){Direction=ParameterDirection.Output}     };    adapter.SelectCommand.Parameters.AddRange(pms);    adapter.Fill(dt);    //获取输出参数并且赋值给label    label1.Text = "总条数:" + pms[2].Value.ToString();    label2.Text = "总页数:" + pms[3].Value.ToString();    label3.Text = "当前页:" + pageIndex;    //数据绑定    this.dataGridView1.DataSource = dt;   }  }  //下一页  private void button2_Click(object sender, EventArgs e)  {   pageIndex++;   LoadData();  }  //上一页  private void button1_Click(object sender, EventArgs e)  {   pageIndex--;   LoadData();  } }}

效果图:

三、通过ado.net调用存储过程与调用带参数的SQL语句的区别。

1>把SQL语句变成了存储过程名称

2>设置SqlCommand对象的CommandType为CommandType.StoredProcedure

这步本质 就是在 存储过程名称前面加了个“ exec ”

3>根据存储过程的参数来设置SqlCommand对象的参数。

4>如果有输出参数需要设置输出参数的Direction属性为:Direction=ParameterDirection.Output

四、如果是通过调用Command对象的ExecuteReader()方法来执行的该存储过程,那么要想获取输出参数,必须得等到关闭reader对象后,才能获取输出参数。

以上这篇ADO调用分页查询存储过程的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持搞代码

相关推荐:

解析ADO.NET对SQL Server数据库执行本文来源gaodai#ma#com搞@@代~&码*网/增删改查操作详解

ADO.NET实用实例介绍

ADO.NET实现对SQL Server数据库的操作教程

以上就是ADO调用分页查询存储过程的实例讲解_实用技巧的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ADO调用分页查询存储过程的实例讲解_实用技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址