MYSQL- 分頁預存程序

來源:互聯網
上載者:User

標籤:

  工作需要,用到MYSQL的分頁功能,在網上找到一個不錯的分頁預存程序,代碼整理了一下!

  預存程序代碼

CREATE PROCEDURE `sp_hj_splitpage`( in _pagecurrent int,/*當前頁*/ in _pagesize int,/*每頁的記錄數*/ in _ifelse varchar(1000),/*顯示欄位*/ in _where varchar(1000),/*條件*/ in _order varchar(1000)/*排序*/)COMMENT ‘分頁預存程序‘BEGIN if _pagesize<=1 then   set _pagesize=20; end if; if _pagecurrent < 1 then   set _pagecurrent = 1;  end if;  set @strsql = concat(‘select ‘,_ifelse,‘ from ‘,_where,‘ ‘,_order,‘ limit ‘,_pagecurrent*_pagesize-_pagesize,‘,‘,_pagesize);  prepare stmtsql from @strsql;  execute stmtsql;  deallocate prepare stmtsql;  set @strsqlcount=concat(‘select count(1) as count from ‘,_where);/*count(1) 這個欄位最好是主鍵*/ prepare stmtsqlcount from @strsqlcount;  execute stmtsqlcount;  deallocate prepare stmtsqlcount; END

  

  調用樣本:

call sp_hj_splitpage(1,3,‘*‘,‘hj_shangpin_cbj where 1=1‘,‘order by id desc‘);

 

  C#調用樣本:

#region 分頁預存程序        /// <summary>        /// 分頁預存程序        /// </summary>        /// <param name="table">表,可以關聯:如 A left join B on A.id=B.Aid </param>        /// <param name="fileds">欄位值,擷取全部欄位用"*"</param>        /// <param name="order">按什麼欄位排序</param>        /// <param name="orderType">排序的方式 有ASC和DESC兩種</param>        /// <param name="pageIndex">頁索引</param>        /// <param name="pageSize">頁大小</param>        /// <param name="strWhere">查詢條件,如不查可空 ""</param>        /// <returns>返回一個DataTable</returns>        public static DataTable GetSplitPageList(string table, string fileds, string order, string orderType, int pageSize, int pageIndex, string strWhere)        {            using (MySqlConnection conn = new MySqlConnection(connectionString))            {                string strCmd = string.Format("call sp_hj_splitpage({0},{1},‘{2}‘,‘{3} where {4}‘,‘order by {5} {6}‘);", pageIndex, pageSize , fileds, table, strWhere, order, orderType);                conn.Open();                MySqlCommand cmd = new MySqlCommand(strCmd, conn);                DataTable dt = new DataTable();                MySqlDataReader dr = cmd.ExecuteReader();                dt.Load(dr);                return dt;            }        }        /// <summary>        /// 獲得分頁總數        /// </summary>        /// <param name="table"></param>        /// <param name="strWhere"></param>        /// <returns></returns>        public static int GetSplitPageListCount(string table, string strWhere)        {            using (MySqlConnection conn = new MySqlConnection(connectionString))            {                conn.Open();                string strSql = "select count(*) from " + table + " where " + strWhere;                MySqlCommand cmd = new MySqlCommand(strSql, conn);                return int.Parse(cmd.ExecuteScalar().ToString());            }        }        #endregion

 

 

原文網址:http://blog.csdn.net/jxncwzb/article/details/2883467

 

MYSQL- 分頁預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.