Heim > Backend-Entwicklung > C#.Net-Tutorial > Beispielerklärung für den ADO-Aufruf der gespeicherten Paging-Abfrageprozedur_Praktische Tipps

Beispielerklärung für den ADO-Aufruf der gespeicherten Paging-Abfrageprozedur_Praktische Tipps

韦小宝
Freigeben: 2017-12-15 14:37:33
Original
2084 Leute haben es durchsucht

Der Redakteur unten wird Ihnen eine Beispielerklärungder ADO-Aufruf-Paging-Abfragegespeicherte Prozedur mitteilen. Sie hat einen sehr guten Referenzwert und wird für alle hilfreich sein Machen Sie alle besser mit ADO vertraut. Wenn Sie sich für ADO interessieren, folgen Sie bitte dem Editor, um einen Blick darauf zu werfen

1. Paging Stored Procedure


----------使用存储过程编写一个分页查询-----------------------
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
Nach dem Login kopieren



2. ADO ruft gespeicherte Prozeduren auf


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();
  }
 }
}
Nach dem Login kopieren


Rendering:

3. Pass Der Unterschied zwischen dem Aufruf einer gespeicherten Prozedur durch ado.net und dem Aufruf einer SQL-Anweisung mit Parametern.

1> Wandeln Sie die SQL-Anweisung in einen gespeicherten Prozedurnamen um

2> Setzen Sie den CommandType des SqlCommand-Objekts auf CommandType.StoredProcedure

Das Wesentliche Dieser Schritt besteht aus „exec“ vor dem Namen der gespeicherten Prozedur hinzufügen

3> Legen Sie die Parameter des SqlCommand-Objekts entsprechend den Parametern der gespeicherten Prozedur fest.

4> Wenn Ausgabeparameter vorhanden sind, müssen Sie die Direction-Eigenschaft des Ausgabeparameters wie folgt festlegen: Direction=ParameterDirection.Output

4. Wenn Sie ExecuteReader aufrufen () der Command-Objektmethode, um die gespeicherte Prozedur auszuführen. Wenn Sie dann die Ausgabeparameter abrufen möchten, müssen Sie warten, bis das Reader-Objekt geschlossen ist, bevor Sie die Ausgabeparameter abrufen können.

Die obige Beispielerklärung der gespeicherten Paging-Abfrageprozedur von ADO ist der gesamte Inhalt, den der Herausgeber geteilt hat. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen . .

Verwandte Empfehlungen:

Analyse von ADO.NET Detaillierte Erläuterung der Vorgänge zum Hinzufügen, Löschen, Ändern und Überprüfen SQL Server-Datenbank

Einführung in praktische Beispiele von ADO.NET

ADO.NET-Implementierungs-Tutorial für den Betrieb von SQL Server-Datenbanken

Das obige ist der detaillierte Inhalt vonBeispielerklärung für den ADO-Aufruf der gespeicherten Paging-Abfrageprozedur_Praktische Tipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage