C#调用存储过程实现分页(个人代码笔记)
分页的存储过程:
drop proc LoadPageMain create Proc LoadPageMain
@pageIndex int,
@pageSize int,
@count int out
as
select top(@pageSize) * from dbo.MyStudent
where Fid not in
(
select top(@pageSize*(@pageIndex-1)) Fid
from dbo.MyStudent
order by Fid
)
order by Fid
select @count=COUNT(1) from dbo.MyStudent DAL层调用分页存储过程: public List<Model.MyStudent> getPagedList(int pageIndex, int pageSize, out int count)
{
List<Model.MyStudent> modelList = new List<Model.MyStudent>(); //创建最终要返回的model 的 List集合对象 string connStr = "server=.;database=CCDB;uid=sa;pwd=130988825"; using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand()) //创建command对象
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure; 设置command 对象的type属性
cmd.CommandText = "LoadPageMain"; //指定相应的存储过程 cmd.Parameters.Add(new SqlParameter("@pageIndex",pageIndex)); //为存储过程添加参数
cmd.Parameters.Add(new SqlParameter("@pageSize",pageSize));
SqlParameter outCount = new SqlParameter("@count",SqlDbType.Int); //创建将要输出的参数,并添加到参数集合中
outCount.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outCount); conn.Open(); using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) //用SqlDataReader 对象回去数据,不用担心conn断开的问题
{
DataSet ds = new DataSet();
sda.Fill(ds); //获取存储过程返回的数据集 count = (int)outCount.Value; // 注意:获取 存储过程输出的参数值 foreach (DataRow row in ds.Tables[0].Rows )
{
Model.MyStudent model = new Model.MyStudent(); model.FName = Convert.ToString(row[1]);
model.FAge = Convert.ToInt32(row[2]);
model.FGender = Convert.ToString(row[3]);
model.FMath = row[4] is DBNull?null: (int?)Convert.ToInt32(row[4]);
model.FEnglish = Convert.ToInt32(row[5]);
model.FClassId = Convert.ToInt32(row[6]);
model.FBirthday = Convert.ToDateTime(row[7]); modelList.Add(model);
}
} }
}
return modelList;
} aspx页面输出分页的方式: 在后台拼接字符串(数据输出的、分页连接的)输出到前台,后台通过前台传来的pageIndex、pageSize参数来动态改变数据 protected void Page_Load(object sender, EventArgs e)
{
int count = 0;
int pageIndex = Request["pageIndex"]==null?1:Convert.ToInt32(Request["pageIndex"]);
int pageSize = Request["pageSize"]==null?20:Convert.ToInt32(Request["pageSize"]);
BLL.MyStudent bll_mystudent = new BLL.MyStudent();
List<Model.MyStudent> modelList= bll_mystudent.getPagedList(pageIndex, pageSize, out count); StringBuilder sb = new StringBuilder();
for (int i = 0; i < modelList.Count; i++)
{
sb.Append(string.Format("<tr> <td>" + modelList[i].FName + "</td> <td>" + modelList[i].FAge + "</td> <td>" + modelList[i].FGender + "</td> <td>" + modelList[i].FMath + "</td> <td>" + modelList[i].FEnglish + "</td> <td>" + modelList[i].FClassId + "</td> <td>" + modelList[i].FBirthday + "</td> <td>修改 删除 详情</td> </tr>"));
}
trBody = sb.ToString(); int pageCount=(count-1)/pageSize+1;
StringBuilder sbFY = new StringBuilder();
sbFY.Append("<a href='?pageSize=20&pageIndex=1'>上一页</a> ");
for (int i = 0; i < pageCount; i++)
{
sbFY.Append(string.Format("<a href='?pageSize=20&pageIndex={0}'>{0}</a> ", i, i));
}
sbFY.Append("<a href='?pageSize=20&pageIndex=1'>下一页</a> ");
strFY = sbFY.ToString();
}
C#调用存储过程实现分页(个人代码笔记)的更多相关文章
- MyBatis之四:调用存储过程含分页、输入输出参数
在前面分别讲解了通过mybatis执行简单的增删改,多表联合查询,那么自然不能缺少存储过程调用,而且还带分页功能. 注意:表结构参见上篇讲解联合查询的表. 一.查询某班级以及该班级下面所有学生的记录 ...
- Ibatis调用存储过程实现增删改以及分页查询
1.Ibatis实现增删改操作很简单了,通常我是将某一模块的增删改功能写在一个存储过程里,通过一个标识符去区分执行增加还是修改抑或删除操作. statement: <!-- 存储过程:实现学生的 ...
- Java数据库连接--JDBC调用存储过程,事务管理和高级应用
相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...
- Sybase·调用存储过程并返回结果
最近项目要用Sybase数据库实现分页,第一次使用Sybase数据库,也是第一次使用他的存储过程.2个多小时才调用成功,在此记录: 项目架构:SSM 1.Sybase本身不支持分页操作,需要写存储过程 ...
- [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 我也谈谈 代码调用存储过程超时,SQL Server Management Studio里运行很快的问题
最近遇到了一个问题就是 一个执行速度很快的存储过程,在代码中调用的时候却超时了. 后来看到了两篇文章: 其中一篇是这样介绍的 今天同事用代码调用存储过程时超时,在SQL Server Manageme ...
- ADO.NET笔记——调用存储过程
相关知识: 在ADO.NET访问SQL Server时,鼓励使用存储过程取代常规的SQL语句. 存储过程有下列优点: 存储过程中的SQL语句将会经过预先的解析和编译,然后存放在数据库服务器上行.调用的 ...
- MyBatis学习笔记(六)——调用存储过程
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4270352.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据 ...
- MySQL学习笔记:调用存储过程或函数报1418错误
问题 MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DE ...
随机推荐
- c++实现二分查找
简要描述: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除 困难. 条件:查找的数组必须要为有序数组. 二分查找的过程剩简要描述如下图: 二种实 ...
- thinkphp小技巧
if(IS_POST) _404("页面不存在",U("index")) //如果不是POST提交,则跳转到index.debug模 ...
- (IOS)多线程开发
一.线程的使用 以向网络请求一张图片为例 -(void)downURL:(NSURL *)aURL { NSData *d = [NSData dataWithContentsOfURL:aURL]; ...
- 一維條碼編碼規則(1D Barcode)
1.Code 39 條碼:又分 標準型Code 39 條碼(Standard Code 39):資料內容包含有0~9數字,A~Z英文字母,”+”,”-“,”*”,”/”,”%”,”$”,”.”以及sp ...
- Eclipse 编码区-保护色-快捷大全
Eclipse快捷键大全 Eclipse编码区-保护色-快捷设置 1.设置路径: windows-preferences-general-editors-text Editors-ba ...
- boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. //makefile #-------------------------------------------------- ...
- [ArcGIS必打补丁]ArcGIS 10.1 SP1 for (Desktop, Engine, Server) Quality Improvement Patch
大家都知道假设希望保证企业级GIS系统的稳定执行,除了使用最新的ArcGIS版本号产品以外,还须要打上相关的补丁. 补丁分为:Service Pack和Patch 比如,假设你使用的ArcGIS10. ...
- 驱动: 中断【1】linux中断流程
通常情况下,当一个给定的中断处理程序正在执行时,所有其他的中断都是打开的,所以这些不同中断线上的其他中断都能被处理,但当前中断总是被禁止的. 将中断处理切为两个部分或两半.中断处理程序上半部(top ...
- if简单的写法之范围
/* Name:if的范围 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月9日 03:22:32 Description: */ # include & ...
- USACO The Tamworth Two 模拟
一道模拟题不过要担心的是牛或者人在转弯的时候,另一方如果能走,那么要走,不能停留. 还是蛮简单的. 调试输出的话可以看到具体追击过程 Source Code: /* ID: wushuai2 PROG ...