.NET+MVC+ORACLE存储分页查询一后端实现
MemberController:
public ActionResult UserList()
{
UserBll userBll = new UserBll();
string keyWords = Request.GetString("keyWords").ToString("filtersql");
int userStatus = Request.GetInt("userStatus", -);
int pageIndex = Request.GetInt("pageIndex", );
int pageSize = Request.GetInt("pageSize", );
string sTime = Request.GetDateTime("Stime").ToString("filtersql");
string eTime = Request.GetDateTime("Etime").ToString("filtersql");
string mobileNum = "";
int totalCount = ;
DataTable userList = userBll.GetUser(keyWords, userStatus, pageIndex, pageSize, ref totalCount, sTime, eTime, mobileNum ); ViewBag.userList = userList;
ViewBag.TotalCount = totalCount; //是否是Ajax提交过来的数据
if (Request.IsAjaxRequest())
return PartialView("PartialPageUserList", userList);
return View(userList);
}
/// <summary>
/// 获取用户列表
/// </summary>
/// <param name="KeyWords">关键字(手机号码、身份证号)</param>
/// <param name="MebStatus">用户状态</param>
/// <param name="pageIndex">当前页码</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="totalCount">总记录数</param>
/// <returns>用户列表</returns>
public DataTable GetUser(string KeyWords, int MebStatus, int pageIndex, int pageSize, ref int totalCount, string Stime, string Etime, string mobileNumCity, string mobileOperation)
{
StringBuilder sbSqlWhere = new StringBuilder();
sbSqlWhere.Append(" 1=1 and u.UserStatus !=9");
if (KeyWords != "")
{
sbSqlWhere.AppendFormat(" and u.MobileNo like '%{0}%'", KeyWords);
}
if (MebStatus >= )
{
sbSqlWhere.Append(" and u.UserStatus =" + MebStatus);
}
if (Stime != "")
{
sbSqlWhere.Append(" and u.AddTime>=to_date('"+Convert.ToDateTime(Stime).ToString("yyyy-MM-dd HH:mm:ss")+"','yyyy-mm-dd hh24:mi:ss')");
}
if (Etime != "")
{
sbSqlWhere.Append(" and u.AddTime<to_date('"+Convert.ToDateTime(Etime).AddDays().ToString("yyyy-MM-dd HH:mm:ss")+"','yyyy-mm-dd hh24:mi:ss')");
}
string tableName = @" Meb_User u INNER JOIN Meb_Blance o ON u.UserId=o.MeberUserId ";
string fields = @" u.UserId,u.MobileNo,u.UserType,u.AddTime,u.UserStatus,o.BlancePrice"
string orderField = " u.AddTime desc ";
return commonDll.GetListByFenye(tableName, fields, pageIndex, pageSize, ref totalCount, sbSqlWhere.ToString(), orderField);
}
public interface ICommon
{
/// <summary>
/// 查询tableName信息
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fields">字段</param>
/// <param name="pageIndex">第几页</param>
/// <param name="pageSize">大小</param>
/// <param name="count">返回个数</param>
/// <param name="strWhere">条件</param>
/// <param name="orderField">排序</param>
/// <returns>返回tableName集合</returns>
DataTable GetListByFenye(string tableName, string fields, int pageIndex, int pageSize, ref int count, string strWhere, string orderField);
}
/// <summary>
/// 查询tableName信息
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fields">字段</param>
/// <param name="pageIndex">第几页</param>
/// <param name="pageSize">大小</param>
/// <param name="count">返回个数</param>
/// <param name="strWhere">条件</param>
/// <param name="orderField">排序</param>
/// <returns>返回tableName集合</returns>
public DataTable GetListByFenye(string tableName, string fields, int pageIndex, int pageSize, ref int count, string strWhere, string orderField)
{
OracleParameter[] parameter ={
new OracleParameter("TableName",OracleType.VarChar),
new OracleParameter("SelectFields",OracleType.VarChar),
new OracleParameter("OrderField",OracleType.VarChar),
new OracleParameter("sqlWhere",OracleType.VarChar),
new OracleParameter("pageSize",OracleType.Int32),
new OracleParameter("pageIndex",OracleType.Int32),
new OracleParameter("totalRecord",OracleType.Int32),
new OracleParameter("v_cur",OracleType.Cursor)
};
parameter[].Value = tableName;
parameter[].Value = fields;
parameter[].Value = orderField;
parameter[].Value = strWhere;
parameter[].Value = pageSize;
parameter[].Value = pageIndex;
parameter[].Direction = ParameterDirection.Output;
parameter[].Direction = ParameterDirection.Output;
DataTable dt = OracleHelper.ExecuteDataTable(CommandType.StoredProcedure, "FenYePagePro", parameter);
count = (int)parameter[].Value;
return dt;
}
存储:
CREATE OR REPLACE PROCEDURE "FENYEPAGEPRO"
(
TABLENAME IN VARCHAR2
, SELECTFIELDS IN VARCHAR2
, ORDERFIELD IN VARCHAR2
, SQLWHERE IN VARCHAR2
, PAGESIZE IN NUMBER
, PAGEINDEX IN NUMBER
, TOTALRECORD OUT NUMBER
, v_cur OUT SYS_REFCURSOR
) is strSql varchar2(20000);--获取数据的sql语句
pageCount number;--该条件下记录页数
startIndex number;--开始记录
endIndex number;--结束记录 BEGIN
strSql:='select count(1) from '||TABLENAME;
if SQLWHERE is not null or SQLWHERE<>'' then
strSql:=strSql||' where '||SQLWHERE;
end if; EXECUTE IMMEDIATE strSql INTO TOTALRECORD;
--计算数据记录开始和结束
pageCount:=TOTALRECORD/PAGESIZE+1;
startIndex:=(PAGEINDEX-1)*PAGESIZE+1;
endIndex:=PAGEINDEX*PAGESIZE; strSql:='select rownum ro,A.* from ( select '||SELECTFIELDS||' from '||TABLENAME||' '; if SQLWHERE is not null or SQLWHERE<>'' then
strSql:=strSql||' where '||SQLWHERE;
end if; if ORDERFIELD is not null or ORDERFIELD<>'' then
strSql:=strSql||' order by '||ORDERFIELD;
end if; strSql:=strSql||') A where rownum<='||endIndex; strSql:='select * from ('||strSql||') where ro >='||startIndex;
--DBMS_OUTPUT.put_line(strSql);打印SQL语句 OPEN v_cur FOR strSql;
END FENYEPAGEPRO;
.NET+MVC+ORACLE存储分页查询一后端实现的更多相关文章
- .NET+MVC+ORACLE存储分页查询一前端实现
MemberList.cshtml @{ ViewBag.Title = "用户列表"; Layout = null;} <!DOCTYPE html> & ...
- asp.net mvc多条件+分页查询解决方案
开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...
- Oracle中分页查询语句
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.O ...
- Oracle的分页查询语句优化
Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一) 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT ...
- Oracle 的分页查询 SQL 语句
Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM T ...
- Oracle 数据库分页查询的三种方法
一.Oracle 数据库分页查询的三种方法 1.简介 不能对 rownum 使用 >(大于或等于 1 的数值).>=(大于 1 的数值).=(不等于 1 的数值),否则无结果.所以直接用 ...
- oracle 的分页查询与mysql 的分页查询
oracle 的分页查询: select * from (select o.*,rownum rn from Persons o) where rn >40 and rn <=60 : ...
- mysql、sql server、oracle数据库分页查询及分析(操作手册)
1.mysql分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实 ...
- oracle高效分页查询总结
本文参考链接:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 探索查询语句: --分页参数:size = 20 page = 2 --没有or ...
随机推荐
- 【Java】 剑指offer(58-2) 左旋转字符串
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部 ...
- 利用python计算多边形面积
最近业务上有一个需求,给出多边形面积. Google了一下,发现国内论坛给的算法都是你抄我我抄你,也不验证一下是否正确, 从 博客园到csdncsdn 然后传播到国内各个角落...真是无力吐槽了. 直 ...
- Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置
Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...
- 虚拟机克隆后导致两台机器的IP都不显示的解决方法
centos7中输入ifconfig出现ens33,没有eth0,也没有ip,不能上网,输入ifconfig后如下图 之前在网上也找了很多的方法,比如删除文件70-persistent-ipoib.r ...
- IdentityServer4-主题
一.Startup 二.定义Resources 三.定义Clients 四.登录 五.使用外部身份提供商登录 六.Windows身份验证 七.登出 八.注销外部身份提供商 九.联合注销 十.联合网关 ...
- MySql:Table 'database.TABLE_ONE' doesn't exist
1. 问题描述 由于最近使用本地的MySQL奔溃了,在修改管理员密码时,不慎修改错误,导致无法重新写会,甚至按照MySQL官网手册都无法修改正确,遂放弃修改root密码,直接将一个未有数据的纯净版My ...
- POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀数组 倍增)
题目链接 POJ2774 SPOJ1811 LCS - Longest Common Substring 比后缀自动机慢好多(废话→_→). \(Description\) 求两个字符串最长公共子串 ...
- Python图形编程探索系列-06-按钮批量生产函数
设计任务 初步设计一个批量生产按钮的函数,根据需要的按钮数量,自动生成多少按钮. 函数设计 import tkinter as tk # 导入tkinter库 root = tk.Tk() # 建立程 ...
- Python3基础系列-基本入门语法
本文简单地介绍了python的一些基本入门知识,通过对这些知识的了解,大家可以写一些简单的代码,同时也为后面深入理解打下基础.本文的主要内容如下: 值和类型 值,即value,通常有:1,2,3.14 ...
- PHP函数 ------ ctype_alnum
//判断是否是字母和数字或字母数字的组合 if(!ctype_alnum($str)){ echo '只能是字母或数字的组合';exit; }整理下ctype functions: 1.ctype_a ...