.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 ...
随机推荐
- 051 日志案例分析(PV,UV),以及动态分区
1.实现的流程 需求分析 时间:日,时段 分区表:两级 PV UV 数据清洗 2015-08-28 18:19:10 字段:id,url,guid,tracktime 数据分析 导出 2.新建源数据库 ...
- ubuntu16.04通过apt-get方式安装MongoDB
虽然Ubuntu本身也提供MongoDB安装包,但往往官网的安装包版本更新. hupeng@hupeng-vm:~$ apt-cache show mongodb-clients Package: m ...
- 求链表的倒数第m个元素
法一: 首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第m个,转换为正数第n-m+1个,接下去遍历一次就可以得到结果. 不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二 ...
- CentOS下生成密钥对(公钥、私钥)
1.公钥.私钥简述: 假设数据传输方A向数据接收方B传输数据(以A为服务器,B为客户端为例).现在B有一对密钥对(公钥和私钥),B将公钥发送给A,A通过公钥加密后将数据传给B,B收到数据后利用手里的私 ...
- UVa 11059 - Maximum Product 最大乘积【暴力】
题目链接:https://vjudge.net/contest/210334#problem/B 题目大意:Given a sequence of integers S = {S1, S2, . . ...
- Linux系统 vi/vim文本编辑器
Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...
- tensorflow相关API的学习
学习目录 1.tensorflow相关函数理解 (1)tf.nn.conv2d (2)tf.nn.relu (3)tf.nn.max_pool (4)tf.nn.dropout (5)tf.nn.si ...
- python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...
- 潭州课堂25班:Ph201805201 第八课:函数基础和函数参数 (课堂笔记)
1, 函数定义 def fun(): print('测试函数') fun() #调用函数 return 运行函数返回值 def fun(): name = [1,3,4,5] return name[ ...
- [HDU5685]Problem A
来源: 2016"百度之星" - 资格赛(Astar Round1) 思路: 首先处理出所有前缀的哈希$f$,对于所有的询问$[a,b]$,答案即为$\frac{f[b]}{f[a ...