一、分页存储过程
----------使用存储过程编写一个分页查询-----------------------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调用分页查询存储过程的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。
相关推荐:
解析ADO.NET对SQL Server数据库执行增删改查 *** 作详解
ADO.NET实用实例介绍
ADO.NET实现对SQL Server数据库的 *** 作教程 总结
以上是内存溢出为你收集整理的ADO调用分页查询存储过程的实例讲解_实用技巧全部内容,希望文章能够帮你解决ADO调用分页查询存储过程的实例讲解_实用技巧所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)