C#基于数据库存储过程的AJAX分页实例

本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法。分享给大家供大家参考。具体如下:

首先我们在数据库(SQL Server)中声明定义存储过程

代码如下:

use sales    –指定数据库

if(exists(select * from sys.objects where name=’proc_location_Paging’)) –如果这个proc_location_paging存储过程存在则删除

drop proc proc_location_Paging

go

create proc proc_location_Paging   –创建存储过程

(

@pageSize int,  –页大小

@currentpage int,  –当前页

@rowCount int output,  –总行数(传出参数)

@pageCount int output  –总页数(传出参数)

)

as

begin

select @rowCount= COUNT(locid) from location  –给@rowCount赋值

select @pageCount= CEILING((count(locid)+0.0)/@pageSize) from location  –给@pageCount赋值

select top (@pagesize)* from (select ROW_NUMBER() over(order by locid) as rowID,* from location) as t1

where rowID >(@pageSize*(@currentpage-1))

end

go

———————————以上就表示这个存储过程已经定义完了。

———————————以下是执行这个存储过程。我们可以看结果

declare @rowCount int,@pageCount int  –先声明两个参数

–执行proc_location_Paging这个存储过程。@rowCount,@pageCount后面都有output 表示它们两是输出参数

exec proc_location_Paging 10,1,@rowCount output,@pageCount output

select @rowCount,@pageCount  –查询这两个参数的值

因为是直接访问数据库的,所以我们将下面这条方法写入到DAL层中,这里我将它写入到SqlHelper中

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

using System.Reflection;

namespace LLSql.DAL

{

public class SqlHelper

{

/// <summary>

/// 获取连接数据库字符串

/// </summary>

private static string connStr = ConfigurationManager.ConnectionStrings[“ConnStr”].ConnectionString;

public static DataTable ExecuteProcPageList(int pageSize, int currentPage, out int rowCount, out int pageCount)

{

using (SqlConnection conn = new SqlConnection(connStr))

{

conn.Open();

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandText = “proc_location_paging”; //存储过程的名字

cmd.CommandType = CommandType.StoredProcedure; //设置命令为存储过程类型(即:指明我们执行的是一个存储过程)

rowCount = 0;

pageCount = 0;//这里随便给rowCount,pageCount赋个值,因为使用out传递参数的时候,在方法内部一定要给out参数赋值才能用它,但是虽然这里给它赋初值了,但是在执行存储过程中,存储过程又会给这两个参数赋值,并返还回来给我们,那个才是我们要值

SqlParameter[] parameters ={

new SqlParameter(“@pageSize”,pageSize),

new SqlParameter(“@currentpage”,currentPage),

new SqlParameter(“@rowCount”,rowCount),

new SqlParameter(“@pageCount”,pageCount)

};

//因为在存储过程中@rowCount 与@pageCount 是一个输出参数(output), 而parameters这个数组里,第三,和第四个参数就是要用来替换掉这两个输出参数的,所以这里要将parameters这个数组里的这两个参数设为输出参数。

parameters[2].Direction = ParameterDirection.Output;

parameters[3].Direction = ParameterDirection.Output;

cmd.Parameters.AddRange(parameters); //将参数传递给我们的cmd命令对象

DataTable dt = new DataTable();

using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))

{

adapter.Fill(dt);//到数据库去执行存储过程,并将结果填充到dt表中

}

//等存储过程执行完毕后,存储过程会把这两个输出参数传递出来。那么我们在这里来取得这两个返回参数。

rowCount = Convert.ToInt32(parameters[2].Value);

pageCount = Convert.ToInt32(parameters[3].Value);

return dt;

}

}

}

}

}

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#基于数据库存储过程的AJAX分页实例

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23173.html

相关内容

C#导出Excel的示例详解

C#控制台基础 list初始化的两种方法

Winform实现鼠标可穿透的窗体镂空效果

关于finalize机制和引用、引用队列的用法详解


轻松学习C#的foreach迭代语句

C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法

C#编写DES加密、解密类

C#实现鼠标移动到曲线图上显示值的方法

时间: 2024-10-17 01:08:41

C#基于数据库存储过程的AJAX分页实例的相关文章

HTML5 history API与ajax分页实例页面

<ul id="choMenu" class="rel cho_menu"> <li><a href="ajax.php?area=pudong" class="cho_link cho_link_on">浦东区<span class="ml20">8</span></a></li> <li><a href

基于jquery的ajax分页插件(demo+源码)

前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客园学习了很多的知识,看过很多人的分享.说来也惭愧,自己没能为园友们分享自己的所学所得(毕竟水平比较差). 过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?).八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都屌屌的?之前一直从事.NET开发(现在在这边也是),

Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数 (转)

众所周知,Mybatis本身没有提供基于数据库方言的分页功能,而是基于JDBC的游标分页,很容易出现性能问题.网上有很多分页的解决方案,不外乎是基于Mybatis本机的插件机制,通过拦截Sql做分页.但是在像Oracle这样的数据库上,拦截器生成的Sql语句没有变量绑定,而且每次语句的都要去拦截,感觉有点浪费性能. Mybatis Generator是Mybatis的代码生成工具,可以生成大部分的查询语句. 本文提供的分页解决方案是新增Mybatis Generator插件,在用Mybatis

一点实例明白mysql数据库存储过程

mysql存储过程: 封装sql: create procedure p1() begin select * from t_news; end $ //mysql存储过程 简单实例 显示存储过程信息:  \G (横向表格采用纵向表格输出) delimiter $  改变执行符号,直到mysql碰到$ 开始执行语句命令 set  names     解决mysql乱码问题  但mysql重启后又还原到以前字符集状态 call 存储过程名字 ()  调用存储过程 参数: create procedu

三大数据库下的存储过程实现通用分页

三大数据库下的存储过程实现通用分页  SqlServer数据库下通用存储过程实现分页: 1 --通用存储过程分页 2 CREATE PROCEDURE procList 3 --我们需要传入的参数 4 @strWhere NVARCHAR(max), --查询条件 5 @PageSize INT, --每页显示多少条内容 6 @PageIndex INT , --当前页 7 @TableName NVARCHAR(max), --需要查询的表名 8 @ColName NVARCHAR(max),

discuz分页函数改成基于jqueryd的ajax分页函数

/**  *AJAX分页  *$num 为总共的条数   比如说这个分类下共有15篇文章  *$perpage为每页要显示的条数  *$curpage为当前的页数  *$url为请求路径,  *$obj为html对象,返回给jqery处理  *$page为$multipage这个字符串中要显示的表示页数的变量个数  *$maxpages为最大的页数值   此函数最后有一句$maxpage = $realpages;  */ function multi($num, $perpage, $curp

C#与sql server数据库存储过程的操作实例

通过这几天的学习和实际操作,把C#与sql server数据库存储过程的操作搞清楚了. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Windows.

RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为指导思想,作为异质系统整合与互操作性.分布式应用提供了可行的解决方案. 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表

Jsp分页实例---真分页

网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示. 真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端. 由此可以很清楚的分辨出真假分页各自的优缺点: 假分页:由于一次性读出所有数据并返回给客户端,如果数据量庞大,所以这一次的动作可能是非常消耗服务器资源和带宽的, 但是返回给客户端以后就非常轻松了,客户在