ADO调用分页查询存储过程的实例讲解
更新时间:2017年12月12日 09:10:03 作者:hao_1234_1234
下面小编就为大家分享一篇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)
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){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 PDF打印组件itextSharp(.NET组件本篇文章主要介绍了.NET PDF打印组件itextSharp。.NET中实现PDF打印的组件比较多,例如PDFsharp、Report.NET、sharpPDF、itextSharp等等,今天主要简单的介绍itextSharp组件。有兴趣的可以了解一下。
2016-12-12
asp.net core 腾讯验证码的接入示例代码这篇文章主要介绍了asp.net core 腾讯验证码的接入示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2019-10-10
.Net Core导入千万级数据至Mysql数据库的实现方法今天我们谈谈MySQL怎么高性能插入千万级的数据的,讨论这个问题牵扯到一个数据迁移功能,高性能的插入数据,接下来通过本文给大家分享几种实现方法,感兴趣的朋友跟随小编一起学习下吧 2021-05-05
ASP.NET使用xslt将xml转换成Excel本文介绍利用Excel软件生成格式,提取和精简之后制作成xslt文件,将xml导入,以xslt为模板,生成新的Excel文件的过程。 2016-05-05
Attribute/特性心得随笔从事asp.net工作的相关人员对Attribute并不陌生吧,本文就来为大家介绍下Attribute特性,下面有个不错的示例,喜欢的朋友感受下 2013-11-11
.NET 中的 常量字段const应用介绍C#中,当使用常数符号const时,编译器首先从定义常数的模块的元数据中找出该符号,并直接取出常数的值,接下来详细介绍,感兴趣的朋友可以参考下 2013-01-01
asp.net中JavaScript数据验证实现代码我对JavaScript一直不了解。常常为了一点点的数据验证和无刷新就去动用AJAX,实在不爽——有点杀鸡用牛刀的感觉。 2010-05-05
.NET 水晶报表使用代码下面就是介绍在.net下,如何使用水晶报表的方法。 2009-04-04
Visual studio 2017如何发布dotnet core到docker这篇文章主要介绍了Visual studio 2017如何发布dotnet core到docker的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2017-04-04
asp.net 遍历repeater中的控件的几种方式遍历repeater中的控件的几种方式小结,需要的朋友可以参考下。 2010-02-02
最新评论

评论(0)