存储过程:

获取范围内的数据

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分页存储过程的应用的更多相关文章

  1. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  2. MYSQL分页存储过程及事务处理--转自peace

    MYSQL的分页过程,和事务处理的一个测试过程. /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输 ...

  3. 调用MySql 分页存储过程带有输入输出参数

    Create PROCEDURE getuser ( IN pageIndex INT, IN pageSize INT, OUT count INT ) BEGIN )*pageSize; sele ...

  4. mysql 分页存储过程 一次返回两个记录集(行的条数,以及行记录),DataReader的Read方法和NextResult方法

    DELIMITER $$ USE `netschool`$$ DROP PROCEDURE IF EXISTS `fn_jk_GetCourses`$$ CREATE DEFINER=`root`@` ...

  5. mysql分页存储过程一步一步实现

    1. CREATE DEFINER=`root`@`localhost` PROCEDURE `P_HoverTreePages`( ), ) , ), ), ), IN `SortType` INT ...

  6. MySQL分页存储过程

    CREATE PROCEDURE ProcPage(in tableName varchar(20),#表名  in showField varchar(100),#要显示的列名  in whereT ...

  7. MySql通用分页存储过程

    MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...

  8. MYSQL版查询分页存储过程

    /*--名称:MYSQL版查询分页存储过程 --输入参数:@fields -- 要查询的字段用逗号隔开--输入参数:@tables -- 要查询的表--输入参数:@where -- 查询条件--输入参 ...

  9. mysql通用分页存储过程遇到的问题(转载)

    mysql通用分页存储过程遇到的问题(转载) http://www.cnblogs.com/daoxuebao/archive/2015/02/09/4281980.html

随机推荐

  1. Leeo 智能夜灯:默默守护你的家

    http://www.ifanr.com/462377 Leeo 智能夜灯是一个低调的设备.它不需要你与之交互,也不会产生多余的费用.当你把它插到墙上插座,然后下载应用后,就不用再管它了.然后,它就开 ...

  2. phpstrom 7.0 序列号

    phpstrom 7.0 用户名 www.goipc.cn license key 13748-1204201000001dZdtN0KxZbl8zNH8RHFCz9t"gjKv9yXf2c ...

  3. [转]unable to resolve superclass of 的奇怪问题和一种解决方法!

    [转]unable to resolve superclass of 的奇怪问题和一种解决方法! http://blog.csdn.net/jackymvc/article/details/90015 ...

  4. flash builder Error #2032

    flash builder编译时flash player报错:"Error #2032". 解决办法:在菜单栏的 项目-->属性-->构建路径,不要勾选“在调试时使用本 ...

  5. FFmpeg在Android上的移植之第一步

    http://blog.sina.com.cn/s/blog_69a04cf40100x1fr.html 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmpeg开发的. ...

  6. [resource]23个python的机器学习包

    23个python的机器学习包,从常见的scikit-learn, pylearn2,经典的matlab替代orange, 到最新最酷的Theano(深度学习)和torch 7 (well,其实lua ...

  7. c++ freelockquque

    http://www.boost.org/doc/libs/1_56_0/doc/html/boost/lockfree/queue.html Class template queue boost:: ...

  8. 【转】2-SAT题集

    转自:http://blog.csdn.net/shahdza/article/details/7779369 [HDU]3062 Party1824 Let's go home3622 Bomb G ...

  9. BZOJ3473: 字符串

    3473: 字符串 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 109  Solved: 47[Submit][Status] Descriptio ...

  10. css块级元素、行内元素

    说说对html页面元素的排列认识: html中所有元素从上到下排列,所以需要css来对其中的元素进行排序.调节样式,并用js为其添加交互效果. css的排序.定位是相对块级元素而言的,margin/p ...