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
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(); } } }
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:
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!