C#基于数据库存储过程的AJAX分页实例
本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法。分享给大家供大家参考。具体如下:
首先我们在数据库(SQLServer)中声明定义存储过程
usesales --指定数据库 if(exists(select*fromsys.objectswherename='proc_location_Paging'))--如果这个proc_location_paging存储过程存在则删除 dropprocproc_location_Paging go createprocproc_location_Paging --创建存储过程 ( @pageSizeint, --页大小 @currentpageint, --当前页 @rowCountintoutput, --总行数(传出参数) @pageCountintoutput --总页数(传出参数) ) as begin select@rowCount=COUNT(locid)fromlocation --给@rowCount赋值 select@pageCount=CEILING((count(locid)+0.0)/@pageSize)fromlocation --给@pageCount赋值 selecttop(@pagesize)*from(selectROW_NUMBER()over(orderbylocid)asrowID,*fromlocation)ast1 whererowID>(@pageSize*(@currentpage-1)) end go ---------------------------------以上就表示这个存储过程已经定义完了。 ---------------------------------以下是执行这个存储过程。我们可以看结果 declare@rowCountint,@pageCountint --先声明两个参数 --执行proc_location_Paging这个存储过程。@rowCount,@pageCount后面都有output表示它们两是输出参数 execproc_location_Paging10,1,@rowCountoutput,@pageCountoutput select@rowCount,@pageCount --查询这两个参数的值
因为是直接访问数据库的,所以我们将下面这条方法写入到DAL层中,这里我将它写入到SqlHelper中
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Configuration; usingSystem.Data.SqlClient; usingSystem.Data; usingSystem.Reflection; namespaceLLSql.DAL { publicclassSqlHelper { ///<summary> ///获取连接数据库字符串 ///</summary> privatestaticstringconnStr=ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; publicstaticDataTableExecuteProcPageList(intpageSize,intcurrentPage,outintrowCount,outintpageCount) { using(SqlConnectionconn=newSqlConnection(connStr)) { conn.Open(); using(SqlCommandcmd=conn.CreateCommand()) { cmd.CommandText="proc_location_paging";//存储过程的名字 cmd.CommandType=CommandType.StoredProcedure;//设置命令为存储过程类型(即:指明我们执行的是一个存储过程) rowCount=0; pageCount=0;//这里随便给rowCount,pageCount赋个值,因为使用out传递参数的时候,在方法内部一定要给out参数赋值才能用它,但是虽然这里给它赋初值了,但是在执行存储过程中,存储过程又会给这两个参数赋值,并返还回来给我们,那个才是我们要值 SqlParameter[]parameters={ newSqlParameter("@pageSize",pageSize), newSqlParameter("@currentpage",currentPage), newSqlParameter("@rowCount",rowCount), newSqlParameter("@pageCount",pageCount) }; //因为在存储过程中@rowCount与@pageCount是一个输出参数(output),而parameters这个数组里,第三,和第四个参数就是要用来替换掉这两个输出参数的,所以这里要将parameters这个数组里的这两个参数设为输出参数。 parameters[2].Direction=ParameterDirection.Output; parameters[3].Direction=ParameterDirection.Output; cmd.Parameters.AddRange(parameters);//将参数传递给我们的cmd命令对象
DataTabledt=newDataTable(); using(SqlDataAdapteradapter=newSqlDataAdapter(cmd)) { adapter.Fill(dt);//到数据库去执行存储过程,并将结果填充到dt表中 } //等存储过程执行完毕后,存储过程会把这两个输出参数传递出来。那么我们在这里来取得这两个返回参数。 rowCount=Convert.ToInt32(parameters[2].Value); pageCount=Convert.ToInt32(parameters[3].Value); returndt; } } } } }