아래 편집기는 ADO 호출 페이징 쿼리저장 프로시저에 대한 예제 설명을 공유합니다. 이는 모든 사람에게 도움이 되고 페이징에 ADO를 더 잘 사용할 수 있기를 바랍니다. ADO에 관심이 있으신 분들은 에디터 팔로우해서 구경해보세요
1. 페이징 저장 프로시저
----------使用存储过程编写一个分页查询----------------------- 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(); } } }
Rendering:
3. ado.net을 통해 저장 프로시저를 호출하는 것과 매개변수가 있는 SQL 문을 호출하는 것의 차이점.
1> SQL 문을 저장 프로시저 이름으로 변환
2> SqlCommand 개체의 CommandType을 CommandType.StoredProcedure로 설정
이 단계의 핵심은 저장 프로시저 앞에 "exec"를 추가하는 것입니다. name
3>저장 프로시저 매개변수에 따라 SqlCommand 개체의 매개변수를 설정합니다.
4> 출력 매개변수가 있는 경우 출력 매개변수의 방향 속성을 다음과 같이 설정해야 합니다. Direction=ParameterDirection.Output
4. Command의 ExecuteReader() 메서드를 호출하여 저장 프로시저를 실행하는 경우 객체를 얻으려면 출력 매개변수를 얻기 전에 판독기 객체가 닫힐 때까지 기다려야 합니다.
위 ADO 호출 페이징 쿼리 저장 프로시저에 대한 예제 설명은 모두 편집자가 공유한 내용이므로 참고가 되기를 바라며 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.
관련 권장 사항:
ADO.NET의 SQL Server 데이터베이스 추가, 삭제, 수정 및 쿼리 작업 구현에 대한 자세한 설명
ADO.NET SQL Server 데이터베이스 구현 튜토리얼
위 내용은 ADO 호출 페이징 쿼리 저장 프로시저 설명 예시_실용 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!