C# MySql分页存储过程的应用
存储过程:
获取范围内的数据
DELIMITER $$ DROP PROCEDURE IF EXISTS `studb`.`GetRecordAsPage` $$ CREATE PROCEDURE `studb`.`GetRecordAsPage` (in tbName varchar(800),in fldName varchar(1000), in strWhere varchar(500),in pageIndex int,in pageSize int,in orderType int,in sortName varchar(50)) BEGIN declare startRow int; declare sqlStr varchar(1000); declare limitTemp varchar(1000); declare orderTemp varchar(1000); set startRow = (pageIndex-1)*pageSize; set sqlStr = CONCAT('SELECT ',fldName,' from ',tbName); set limitTemp = CONCAT(' limit ',startRow,',',pageSize); set orderTemp = CONCAT(' order by ',sortName); if orderType = 0 then set orderTemp = CONCAT(orderTemp,' ASC '); else set orderTemp = CONCAT(orderTemp,' DESC '); end if; set @sqlString = CONCAT(sqlStr,' ',strWhere,orderTemp,limitTemp); prepare sqlstmt from @sqlString; execute sqlstmt; deallocate prepare sqlstmt; END $$ DELIMITER ;
获取条件下的总记录数据
DELIMITER $$ DROP PROCEDURE IF EXISTS `GetRecordCount` $$ -- --CREATE DEFINER=`root`@`localhost` PROCEDURE `GetRecordCount`(in tbName varchar(800),in strWhere varchar(500)) CREATE PROCEDURE `GetRecordCount`(in tbName varchar(800),in strWhere varchar(500)) BEGIN set @strSQL=concat('select count(*) as countStr from ',tbName,strWhere); prepare sqlstmt from @strSQL; execute sqlstmt; deallocate prepare sqlstmt; END $$ DELIMITER ;
测试
建表语句
CREATE TABLE `uinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`iduse` varchar(200) DEFAULT NULL COMMENT '用户编号',
`uname` varchar(200) DEFAULT NULL COMMENT '用户名称',
`email` varchar(200) DEFAULT NULL COMMENT 'Email',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
测试脚本
SELECT
`id`
, `iduse`
, `uname`
, `email`
FROM
`mostimpressive_dscj`.`uinfo`; SET @tbName='uinfo'; -- -- 表名
SET @fldName='iduse,uname,email';-- -- 表的列名
SET @strWhere = ''; -- -- 查询条件
SET @pageIndex=1;-- -- 第几页 传入1就是显示第一页
SET @pageSize=5;-- -- 一页显示几条记录
SET @orderType=0; -- --0是升序 非0是降序
SET @sortName='id'; -- -- 排序字段 CALL Dscj_GetPaged('uinfo','iduse,uname,email','',1,1,1,'id')
-- --SELECT iduse,uname,email from uinfo order by id ASC limit 0,4 -- --传入表名,返回总的记录条数
CALL GetRecordCount('uinfo','')
C#程序
protected void get_data() { string strWhere = " where idmde='" + DropDownList1.SelectedValue + "' and idmke='" + DropDownList2.SelectedValue + "'"; string fldName = "iduse,uname,email,euser,werks"; int pageSize = ; int pageCount = ; int pageCountMod = ; int doCount = ; int pageIndex = System.Convert.ToInt32(pageIndexLab.Text.ToString()); myco = new MySqlConnection(strconn); myco.Open(); mycomm = new MySqlCommand("GetRecordCount", myco); mycomm.CommandType = CommandType.StoredProcedure; MySqlParameter[] para = new MySqlParameter[]{ new MySqlParameter("@tbName",MySqlDbType.VarChar,), new MySqlParameter("@strWhere",MySqlDbType.VarChar,)}; para[].Value = "uinfo"; para[].Value = strWhere; mycomm.Parameters.AddRange(para); MySqlDataReader mydr=mycomm.ExecuteReader(); while(mydr.Read()){ pageCount = System.Convert.ToInt32(mydr["countStr"].ToString()) ; pageCountMod = pageCount % pageSize; pageCount= pageCount/ pageSize; if (pageCount == ) { //pageCount++; } else { if (pageCountMod != ) { pageCount++; } } pageCountLab.Text = pageCount.ToString(); } if (pageIndex == ) { pageIndex++; } mydr.Close(); mycomm.Dispose(); mycomm = new MySqlCommand("GetRecordAsPage", myco); mycomm.CommandType = CommandType.StoredProcedure; para.Initialize(); para = new MySqlParameter[]{ new MySqlParameter("@tbName",MySqlDbType.VarChar,), new MySqlParameter("@fldName",MySqlDbType.VarChar,), new MySqlParameter("@strWhere",MySqlDbType.VarChar,), new MySqlParameter("@pageIndex",MySqlDbType.Int32), new MySqlParameter("@pageSize",MySqlDbType.Int32), new MySqlParameter("@orderType",MySqlDbType.Int16), new MySqlParameter("@sortName",MySqlDbType.VarChar,)}; para[].Value = "uinfo"; para[].Value = fldName; para[].Value = strWhere; para[].Value = pageIndex; para[].Value = pageSize; para[].Value = ; para[].Value = "iduse"; mycomm.Parameters.AddRange(para); MySqlDataAdapter myAdapter = new MySqlDataAdapter(mycomm); DataSet myDataSet = new DataSet(); DataView m_DataView = new DataView(); myAdapter.Fill(myDataSet); m_DataView = myDataSet.Tables[].DefaultView; GridView1.DataSource = m_DataView; GridView1.DataBind(); GridView2.DataSource = m_DataView; GridView2.DataBind(); GridView3.DataSource = m_DataView; GridView3.DataBind(); DropDownpage.Items.Clear(); if (pageCount != ) { doCount = ; while (doCount < pageCount) { doCount++; DropDownpage.Items.Add(new ListItem(doCount.ToString()+"页", doCount.ToString())); } } if (pageIndex == ) { Button_IndexFirst.Enabled = false; Button_IndexPrevious.Enabled = false; Button_IndexNext.Enabled = true; Button_IndexLast.Enabled = true; } else if (pageIndex == pageCount) { Button_IndexFirst.Enabled = true; Button_IndexPrevious.Enabled = true; Button_IndexNext.Enabled = false; Button_IndexLast.Enabled = false; } else { Button_IndexFirst.Enabled = true; Button_IndexPrevious.Enabled = true; Button_IndexNext.Enabled = true; Button_IndexLast.Enabled = true; } if (pageCount == || pageCount == ) { pageIndex = pageCount; Button_IndexFirst.Enabled = false; Button_IndexPrevious.Enabled = false; Button_IndexNext.Enabled = false; Button_IndexLast.Enabled = false; DropDownpage.Enabled = false; } else { DropDownpage.Enabled = true; } pageIndexLab.Text = pageIndex.ToString(); if (pageIndex != ) { DropDownpage.SelectedItem.Selected = false; DropDownpage.Items.FindByValue(pageIndex.ToString()).Selected = true; } myco.Close(); } protected void Button_IndexFirst_Click(object sender, EventArgs e) { pageIndexLab.Text = ""; if (pageCountLab.Text.Equals("")) { pageIndexLab.Text = ""; } get_data(); } protected void Button_IndexPrevious_Click(object sender, EventArgs e) { int pageIndex = System.Convert.ToInt32(pageIndexLab.Text.ToString()); pageIndex--; if (pageIndex < ) { pageIndex = ; } pageIndexLab.Text = pageIndex.ToString(); get_data(); } protected void Button_IndexNext_Click(object sender, EventArgs e) { int pageIndex = System.Convert.ToInt32(pageIndexLab.Text.ToString()); int pageCount = System.Convert.ToInt32(pageCountLab.Text.ToString()); pageIndex++; if (pageIndex > pageCount) { pageIndex = pageCount; } pageIndexLab.Text = pageIndex.ToString(); get_data(); } protected void Button_IndexLast_Click(object sender, EventArgs e) { int pageIndex = System.Convert.ToInt32(pageIndexLab.Text.ToString()); int pageCount = System.Convert.ToInt32(pageCountLab.Text.ToString()); pageIndex = pageCount; pageIndexLab.Text = pageIndex.ToString(); get_data(); } protected void DropDownpage_SelectedIndexChanged(object sender, EventArgs e) { pageIndexLab.Text = DropDownpage.SelectedValue; get_data(); }
C# MySql分页存储过程的应用的更多相关文章
- MYSQL分页存储过程及事务处理
最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...
- MYSQL分页存储过程及事务处理--转自peace
MYSQL的分页过程,和事务处理的一个测试过程. /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输 ...
- 调用MySql 分页存储过程带有输入输出参数
Create PROCEDURE getuser ( IN pageIndex INT, IN pageSize INT, OUT count INT ) BEGIN )*pageSize; sele ...
- mysql 分页存储过程 一次返回两个记录集(行的条数,以及行记录),DataReader的Read方法和NextResult方法
DELIMITER $$ USE `netschool`$$ DROP PROCEDURE IF EXISTS `fn_jk_GetCourses`$$ CREATE DEFINER=`root`@` ...
- mysql分页存储过程一步一步实现
1. CREATE DEFINER=`root`@`localhost` PROCEDURE `P_HoverTreePages`( ), ) , ), ), ), IN `SortType` INT ...
- MySQL分页存储过程
CREATE PROCEDURE ProcPage(in tableName varchar(20),#表名 in showField varchar(100),#要显示的列名 in whereT ...
- MySql通用分页存储过程
MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...
- MYSQL版查询分页存储过程
/*--名称:MYSQL版查询分页存储过程 --输入参数:@fields -- 要查询的字段用逗号隔开--输入参数:@tables -- 要查询的表--输入参数:@where -- 查询条件--输入参 ...
- mysql通用分页存储过程遇到的问题(转载)
mysql通用分页存储过程遇到的问题(转载) http://www.cnblogs.com/daoxuebao/archive/2015/02/09/4281980.html
随机推荐
- MySQL 多实例给root用户创建密码
DB:5.5.14 OS:CentOS 6.3 安装多实例MySQL数据库,安装完成后默认无密码,一次性给所有实例的root账户创建密码: #!/bin/bash for i in {3361..3 ...
- js 前加分号和感叹号是什么意思?
;!function(){}(); ;!有什么用? 从语法上来开,Javascript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始.所以,如果在一个单 ...
- [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2 using System; using Sys ...
- Java加解密与数字签名
** Java加解密 ** 实现方式:JDK实现,CC,BC JDK提供比较基础的底层的实现:CC提供一些简化的操作:BC提供补充 一.Base64加密 非常简单,加密解密就一个函数. 代码如下: 二 ...
- wamp下修改mysql root用户的登录密码
1.安装好wamp后,运行WampServer程序,进入MYSQL控制台; 2.进入控制台后,提示输入密码(不用输入任何密码,因为密码为空),按回车键进入; 3.输入“USE mysql;”然后回车, ...
- VBS基础篇 - 队列
VBS中的队列需要使用System.Collections.Queue '建立队列 Dim Que : Set Que = CreateObject("System.Collections. ...
- CoreLocation MKMapView 地图
系统自带地图 框架: CoreLocation MapKit CLLocationManager --> 定位管理者 CLGeocoder --> 地理编码器 MKMapView -- ...
- bzoj 1295: [SCOI2009]最长距离 暴力+bfs最短路
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 题解: 对每个点暴力跑一遍bfs,看能够到达的最远位置,这里如果有障碍物则距离为1 ...
- linux常用命令详解
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- 【HDOJ】【3853】LOOPS
概率DP/数学期望 kuangbin总结中的第7题 其实跟UVA 11762 Race To 1 那道题差不多……直接推下公式,然后倒推即可 Trick:有的点可能是p1[i][j]==1……这样的点 ...