MVC调用存储过程实现分页,带查询条件
来源:互联网 发布:虚拟数据库 编辑:程序博客网 时间:2024/04/30 09:03
创建需要显示到界面的视图
create view VW_AllotRoom --创建视图as select distinct a.RC_ID,a.RC_Count,a.RC_Name,a.RC_MoneyPerMonth,b.R_ID,b.R_MaleOrFemale,b.R_IsHasFull,b.R_Name,c.F_MaleOrFemale,c.F_ID,c.F_Name,c.F_Remark,d.H_ID,d.H_MaleOrFemale,d.H_Name,d.H_Remark,e.TC_ID,e.Student_IsHasAllotRoom,f.[count] from RoomCategories a join Rooms b on a.RC_ID=b.RC_ID join Floors c on b.F_ID=c.F_ID join Houses d on d.H_ID=c.H_ID left join (select TC_ID,R_ID,Student_IsHasAllotRoom from TrainClassStudents) e on e.R_ID=b.R_ID left join (select R_ID, count(Student_ID) [count] from TrainClassStudents group by R_ID) f on f.R_ID=b.R_IDgo
创建存储过程
--创建一个既带输入参数,又带输出参数的存储过程alter procedure P_GetPagedUserInfoByCondition @PageSize int,--表示每页要显示的记录数 @CurrentPageIndex int,--表示当前要显示第几页的数据 @RecordCount int output,--表示满足条件的记录总数 @RC_Name varchar(20), @R_IsHasFull int, @R_MaleOrFemale intas --动态的sql语句 declare @sql1 nvarchar(2000),@sql2 nvarchar(1000),@condition nvarchar(1000)='' if @RC_Name!='' begin set @condition=@condition+' and RC_Name="'+@RC_Name+'"' end if @R_IsHasFull!=2 begin set @condition+=' and R_IsHasFull='+cast(@R_IsHasFull as varchar)+'' end if @R_MaleOrFemale!=0 begin set @condition+=' and D_ID='+cast(@R_MaleOrFemale as varchar)+'' end set @sql1='select top '+cast(@PageSize as varchar)+' * from VW_AllotRoom where 1=1 '+@condition+' and R_ID not in(select top '+cast(@PageSize*(@CurrentPageIndex-1) as varchar)+' R_ID from VW_AllotRoom where 1=1 '+@condition+' order by R_ID asc) order by R_ID asc' set @sql2='select @RC=count(*) from VW_AllotRoom where 1=1 '+@condition+'' exec sp_executesql @sql1 exec sp_executesql @sql2,N'@RC int output',@RecordCount outputgo
调用存储过程
public DataTable GetRooms(int PageSize, int CurrentPageIndex,out int RecordCount, string RC_Name = "", int R_IsHasFull = 2, int R_MaleOrFemale = 0) { string sql = "P_GetPagedUserInfoByCondition"; SqlParameter[] para ={ new SqlParameter("PageSize",PageSize), new SqlParameter("CurrentPageIndex",CurrentPageIndex), new SqlParameter("RecordCount",0), new SqlParameter("RC_Name",RC_Name), new SqlParameter("R_IsHasFull",R_IsHasFull), new SqlParameter("R_MaleOrFemale",R_MaleOrFemale), }; //设置第三个参数为输出参数 para[2].Direction = ParameterDirection.Output; DataTable dt = Core.DBHelper.ExecuteSelect(sql, true, para); //赋值给输出参数 RecordCount = Convert.ToInt32(para[2].Value); return dt; }
下面是在控制器里面调用方法,简直了,搞了一天,一直会报一个错
然而机智的我想到一个办法!
在定义方法时,没有把输出参数写到里面去,在方法里面定义count,然后让count去接收数据库那边返回过来的值,然后写好之后,发现,这个在一般控制程序里面就是这样写的,简直了,被自己智商秀到了,原来都写烂了的代码。。。。我还天真的以为三层和mvc在输出参数的定义方式有区别,msdn上面翻烂了,没看到什么。。然并卵。今天为这个问题研究一天。
贴出来,纪念我荒废的一天!引以为戒。
[HttpPost] public ActionResult GetRooms(int rows, int page, string RC_Name = "", int R_IsHasFull = 2, int R_MaleOrFemale = 0) { int count = 0; DataTable dt = _AllotRoomBLL.GetRooms(rows, page, out count, RC_Name, R_IsHasFull, R_MaleOrFemale); int Count1 = count; string json = JsonConvert.SerializeObject(new { total = Count1, rows = dt }); return Content(json); }
0 0
- MVC调用存储过程实现分页,带查询条件
- 条件查询存储过程,带分页
- 使用MVC,实现多条件查询,排序与分页 的 存储过程
- 带参数的存储过程实现任意条件的查询
- Oracle多条件查询分页存储过程
- Ibatis调用存储过程实现增删改以及分页查询
- 万能分页存储过程(带第一页性能优化,任意条件查询,任意字段排序)
- 通用的可带查询条件的SQL语句的分页存储过程
- 通用的可带查询条件的SQL语句的分页存储过程(2)
- SSH实现带条件查询分页功能
- 存储过程实现分页查询
- 分页带查询的存储过程示例
- c#调用多个可选条件查询的分页存储过程
- SQLServer存储过程实现单条件分页
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 一个通用的带分页、带排序、带条件、带分组的全功能的存储过程
- 分页存储过程 UP_GetRecordByPageOrder 多条件查询 错误
- 存储过程条件查询
- hbase伪分布式集群搭建配置文件一览
- QT环境安装VS2013
- js,jsp,html,java文件的注释一行快捷键
- 分布式任务调度平台Antares
- 刷新数据库总是报错:不能增加或者更新约束, Cannot add or update a child row: a foreign key constraint fails
- MVC调用存储过程实现分页,带查询条件
- 树书上的题目M-13
- SpringBoot properties通用属性配置大全
- scikit-learn的主要模块和基本使用
- 找整除
- Spark连接Hadoop读取HDFS问题小结
- Invalidate和postInvalidate的区别
- 微信40017 不合法按钮个数
- ZJOI一试酱油记