SQLHelper

public class SqlHelper
{
private readonly string _constr = ConfigurationManager.ConnectionStrings["key"].ConnectionString; #region 增删改通用方法
public int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] pms)
{
//创建链接对象
//创建命令对象
//打开链接
//执行
using (SqlConnection con = new SqlConnection(_constr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
cmd.CommandType = type;
con.Open();
return cmd.ExecuteNonQuery();
}
}
}
#endregion #region 返回单行单列 public object ExecuteScalar(string sql, CommandType type, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(_constr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
cmd.CommandType = type;
con.Open();
return cmd.ExecuteScalar();
}
}
} #endregion #region datatable查询
public DataTable ExecuteTable(string sql, CommandType type, params SqlParameter[] pms)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(_constr))
{
using (SqlDataAdapter cmd = new SqlDataAdapter(sql, con))
{
if (pms != null)
{
cmd.SelectCommand.Parameters.AddRange(pms);
}
cmd.SelectCommand.CommandType = type;
con.Open();
cmd.Fill(dt);
}
}
return dt;
}
#endregion #region Reader查询
public SqlDataReader ExecuteReader(string sql, CommandType type, params SqlParameter[] pms)
{
SqlConnection con = new SqlConnection(_constr);
SqlCommand cmd = new SqlCommand(sql, con);
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
cmd.CommandType = type;
try
{
con.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
cmd.Dispose();
con.Close();
con.Dispose();
throw;
}
}
#endregion
}

分页

public DataTable GetDataByPage(int start,int end)
{
string sql = "select * from(select *,num=ROW_NUMBER() over (order by id) from UserInfo) as t where t.num>@start and t.num<=@end";
SqlParameter[] pms =
{
new SqlParameter("@start",start),
new SqlParameter("@end",end),
};
return helper.ExecuteTable(sql, CommandType.Text, pms);
}

存储过程

private void LoadData(int index)
{
string sql = "usp_UserInfoPage";
SqlParameter[] pms = {
new SqlParameter("@pageIndex",index),
new SqlParameter("@pageSize",PageSize),
new SqlParameter("@pageCount",SqlDbType.Int){Direction=ParameterDirection.Output},
new SqlParameter("@totalCount",SqlDbType.Int){Direction=ParameterDirection.Output}
}; DataTable dt = db.ExecuteTable(sql, CommandType.StoredProcedure, pms);
List<ClassInfo> list = new List<ClassInfo>();
foreach (DataRow item in dt.Rows)
{
ClassInfo model = new ClassInfo();
model.Id = Convert.ToInt32(item["Id"]);
model.name = item["name"].ToString();
model.pwd = item["pwd"].ToString();
list.Add(model);
}
dataGridView1.DataSource = list;
pageCount = Convert.ToInt32(pms[2].Value);
totalCounnt = Convert.ToInt32(pms[3].Value);
label6.Text = string.Format("{0}/{1}", index, pageCount);
}
create database UserDB
go
use UserDB
go
create table Userinfo(
ID int primary key identity ,
name varchar(20) not null,
pwd varchar(20) not null
)
insert into Userinfo values('sasas','1231231')
insert into Userinfo values('sasas','1231231')
insert into Userinfo values('sasas','1231231')
insert into Userinfo values('admin','123456')
select id,name,pwd from userinfo
go
create proc usp_UserInfoPage
@pageIndex int,
@pageSize int,
@pageCount int output,
@totalCount int output
as
begin
--查询总条数
select @totalCount = COUNT(*) from UserInfo
--查询总页数
set @pageCount = CEILING(@totalCount*1.0/@pageSize)
--查询语句
select * from (select *,num=ROW_NUMBER() over(order by Id) from UserInfo) as t where t.num>(@pageIndex-1)*@pageSize and t.num<=@pageIndex*@pageSize
end
select * from (select *,num=row_number() over(order by id) from userInfo) as t where t.num>0 and t.num<=4

ADO.NET 帮助类 参数传递 存储过程 分页的更多相关文章

  1. 存储过程分页 Ado.Net分页 EF分页 满足90%以上

    存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...

  2. asp.net利用存储过程分页代码

    -最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination ), -- 表名 ) = '*', -- 需要返回的列 )='', -- 排序的字段名 , -- ...

  3. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  4. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  5. php分页类代码带分页样式效果(转)

    php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...

  6. 存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果

    use TTgoif exists (select * from sysobjects where name='Tonge')drop table Tongecreate table Tonge( I ...

  7. Sql Service存储过程分页

    一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle ...

  8. MS SQLSERVER通用存储过程分页

    最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过, ...

  9. 【原创】10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程)

    有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc4+Dapper+Dapper扩展+Sqlserver 目前主要实现 ...

随机推荐

  1. 浅析Nginx与Apache的区别

    Nginx相对于Apache的优势: 1.轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源 2.抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的 ...

  2. 他是 ISIJ 第四名,也是在线知名题库的洛谷“网红”

    转载自加藤惠. 2020年国际初中生信息学竞赛(ISIJ)上,以优秀成绩拿下第四名年仅初三的张湫阳,成为最夺目的选手之一. 而且虽然是初三的选手,但他取得优异成绩后,不少网友并不感到陌生,纷纷留言: ...

  3. D. Circle Game 题解(对称博弈)

    题目链接 题目大意 t组数据(t<=100) 给你一个半径d和步数k,你最开始在原点(0,0)每次可以让x坐标增加k,或者y坐标增加k 两人轮流走,求谁最后不能走了,谁就输了,都是最优博弈 输的 ...

  4. Java基础教程——字符流

    字符流 字节流服务文本文件时,可能出现中文乱码.因为一个中文字符可能占用多个字节. 针对于非英语系的国家和地区,提供了一套方便读写方式--字符流. java.io.Reader java.io.Wri ...

  5. websocket服务端开发

    基于http请求以拉的方式去做服务器的推送,无论是实时性和有效字节都是差强人意的效果. 公司的im系统在与客户端的交互上实际上借助了websocket来实现服务器与客户端的事实消息推送,今天就来简单了 ...

  6. Kafka入门之producer

    一些重要的参数: 1.acks指定了在给producer发送响应前,leader broker必须要确保已成功写入该消息的副本数.当前acks有3个取值,0,1,和all 2.buffer.memor ...

  7. 20190713_windows 2008 R2在启动网站时报错_另一个程序正在使用此文件,进程无法访问

    80端口已经被占用了; 换个端口就好了, 如果你是云服务器, 记得控制台也要开放对应的端口

  8. PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中当前列currentColumn和选中项selectedItems访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前列访问方法 树型部件QTreeWidget的currentColumn()方法返回当前项中得到焦 ...

  9. 第11.24节 Python 中re模块的其他函数

    一. re.compile函数 正则表达式编译函数,在后面章节专门介绍. 二. re.escape(pattern) re.escape是一个工具函数,用于对字符串pattern中所有可能被视为正则表 ...

  10. Day7 Scrum 冲刺博客

    一.站立式会议1. 会议照片 2. 工作进度+燃尽图 团队成员 昨日完成工作 今日工作计划 遇到的困难  周梓波  添加键盘监听事件 由于游戏中计分规则不合理,进行重新设计  无  纪昂学  添加方块 ...