ADO調用分頁查詢預存程序的執行個體講解_實用技巧

來源:互聯網
上載者:User
下面小編就為大家分享一篇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調用分頁查詢預存程序的執行個體講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援topic.alibabacloud.com。

相關推薦:

解析ADO.NET對SQL Server資料庫執行增刪改查操作詳解

ADO.NET實用執行個體介紹

ADO.NET實現對SQL Server資料庫的操作教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.