Esempio n. 1
0
        /// <summary>
        /// 通用分页(适用于MySql数据库)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public List <T> GetPageDataForMySql <T>() where T : ModelBase
        {
            string       sql     = "ProcPage";
            MySqlManager manager = new MySqlManager(sql, System.Data.CommandType.StoredProcedure);

            manager.CommandTimeout = this.TimeOut;
            manager.Add("tableName", this.TableName);
            manager.Add("showField", this.ShowField);
            manager.Add("whereText", this.WhereText.Replace("-", ""));
            manager.Add("orderText", this.OrderText);
            manager.Add("pageSize", this.PageSize);
            manager.Add("pageIndex", this.PageIndex);
            manager.AddOutput("dataCount", MySqlDbType.Int32);
            MySqlDALBase dal = new MySqlDALBase();

            dal.sqlHelp.ConnectionString = this.ConnectionString;
            List <T> list = dal.Select <T>(manager);

            this.DataCount = int.Parse(manager[manager.Count - 1].Value.ToString());
            this.PageCount = (DataCount - 1) / PageSize + 1;
            return(list);

            #region MySql分页存储过程

            /*
             * CREATE PROCEDURE ProcPage(
             * in tableName varchar(20),#表名
             * in showField varchar(100),#要显示的列名
             * in whereText varchar(500),#where条件(只需要写where后面的语句)
             * in orderText varchar(500),#排序条件(只需要写order by后面的语句)
             * in pageSize int,#每一页显示的记录数
             * in pageIndex int,#当前页
             * out dataCount int#总记录数
             * )
             * BEGIN
             *
             * if (pageSize<1)then
             * set pageSize=20;
             * end if;
             *
             * if (pageIndex < 1)then
             * set pageIndex = 1;
             * end if;
             *
             * if(LENGTH(whereText)>0)then
             * set whereText=CONCAT(' where 1=1 ',whereText);
             * end if;
             *
             * if(LENGTH(orderText)>0)then
             * set orderText = CONCAT(' ORDER BY ',orderText);
             * end if;
             *
             * set @strsql = CONCAT('select ',showField,' from ',tableName,' ',whereText,' ',orderText,' limit ',pageIndex*pageSize-pageSize,',',pageSize);
             *
             * prepare stmtsql from @strsql;
             * execute stmtsql;
             * deallocate prepare stmtsql;
             *
             * set @strsqlcount=concat('select count(1) as count into @datacount from ',tableName,'',whereText);
             * prepare stmtsqlcount from @strsqlcount;
             * execute stmtsqlcount;
             * deallocate prepare stmtsqlcount;
             * set datacount=@datacount;
             * END;*/
            #endregion
        }