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
随机推荐
- db2查看表空间
select substr(tbsp_name,1,20) as 表空间名称,substr(tbsp_content_type,1,10) as 表空间类型,sum(tbsp_total_size_k ...
- Oracle RAC 11gR2 修改本地及SCAN监听端口
昨天同事说有套RAC集群客户要求修改数据库的监听端口,在处理的过程中,发现网上的相关资料都不是很全面,所以整理了一下,希望给其他有需要的朋友提供一点有利的参考资料.具体操作过程如下: ...
- 安装gcc及开发环境
安装gcc及开发环境================================> 安装gcc: * apt-get install build-essential * gcc ...
- Nginx + Tomcat 动静分离实现负载均衡(转)
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 # 定义Nginx运行的用户 和 用户组 如果对 ...
- bnuoj 25662 A Famous Grid (构图+BFS)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=25662 #include <iostream> #include <stdio.h ...
- 【转】android如何浏览并选择图片 音频 视频
转自:http://www.cnblogs.com/top5/archive/2012/03/06/2381986.html 这几天 在学习并开发android系统的图片浏览 音频 视频 的浏览 ...
- 那些我用过的Android开源项目
1.RefreshActionItem 基于ActionBarSherlock库的一个扩展,在标题栏右边显示多种刷新效果的UI按钮. 项目主页: https://github.com/ManuelPe ...
- 关于6410的sd卡和nandflash启动的区别
今天在公司我们队长问我个问题,关于cortex的sd启动流程和nandflash的启动流程,一下想不起来了,中午闲来无事就整理了整理当初6410的两种启动方式的区别.在这里写一下.有不对的请指点,我对 ...
- 模仿开发H5游戏,看你有多色
开发记录 前言 之前跟着慕课网学习开发H5小游戏开心鱼,勾起我的兴趣. 在写代码的过程中,不怎么会遇到问题.虽然代码是亲手敲出来的,但是由于并没有对游戏的整体思路,所以并不知道开发与优化的过程. 为了 ...
- 2124: 等差子序列 - BZOJ
Description 给一个1到N的排列{Ai},询问是否存在1<=p1=3),使得Ap1,Ap2,Ap3,…ApLen是一个等差序列. Input 输入的第一行包含一个整数T,表示组数.下接 ...