首页后端开发ASP.NETADO调用分页查询存储过程的实例讲解

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

时间2024-01-30 19:50:03发布访客分类ASP.NET浏览156
导读:收集整理的这篇文章主要介绍了ADO调用分页查询存储过程的实例讲解_实用技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。下面小编就为大家分享一篇ADO调用分页查询存储过程的实例讲解,具有很好的参考价值,希望对大家有所帮助让大家更好的使用...
收集整理的这篇文章主要介绍了ADO调用分页查询存储过程的实例讲解_实用技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。下面小编就为大家分享一篇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调用分页查询存储过程的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。

相关推荐:

解析ADO.NET对SQL Server数据库执行增删改查操作详解

ADO.NET实用实例介绍

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

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

存储过程

若转载请注明出处: ADO调用分页查询存储过程的实例讲解
本文地址: https://pptw.com/jishu/592962.html
Asp.NET控制文件上传的大小方法(超简单) C#操作Styline二次开发实现画线功能

游客 回复需填写必要信息