| 
                         不过在网上找了一些,发现都有一个特点――就是不能传出总记录数,干脆自己研究吧。终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了。贴代码吧直接:也算是对自己学习mysql的一个记录。  复制代码 代码如下: CREATE PROCEDURE p_pageList  (  m_pageNo int, m_perPageCnt int, m_column varchar(1000), m_table varchar(1000), m_condition varchar(1000), m_orderBy varchar(200), out m_totalPageCnt int  )  BEGIN  SET @pageCnt = 1; -- 总记录数  SET @limitStart = (m_pageNo - 1)*m_perPageCnt;  SET @limitEnd = m_perPageCnt;  SET @sqlCnt = CONCAT('select count(1) into @pageCnt from ',m_table); -- 这条语句很关键,用来得到总数值  SET @sql = CONCAT('select ',m_column,' from ',m_table);  IF m_condition IS NOT NULL AND m_condition <> '' THEN  SET @sql = CONCAT(@sql,' where ',m_condition);  SET @sqlCnt = CONCAT(@sqlCnt,m_condition);  END IF;  IF m_orderBy IS NOT NULL AND m_orderBy <> '' THEN  SET @sql = CONCAT(@sql,' order by ',m_orderBy);  END IF;  SET @sql = CONCAT(@sql,' limit ',@limitStart,',@limitEnd);  PREPARE s_cnt from @sqlCnt;  EXECUTE s_cnt;  DEALLOCATE PREPARE s_cnt;  SET m_totalPageCnt = @pageCnt;  PREPARE record from @sql;  EXECUTE record;  DEALLOCATE PREPARE record;  END 
  asp.net 复制代码 代码如下: /// <summary>  /// 分页显示  /// </summary>  /// <param name="conn">连接数据库字符串</param>  /// <param name="perPage">每页显示条数</param>  /// <param name="columnList">查询的字段字符</param>  /// <param name="tableName">查询的表名</param>  /// <param name="condition">where条件(不用写where)</param>  /// <param name="orderStr">排序条件(不用写order by)</param>  /// <param name="pageInfo">返回页码的数组,0,1,2,3分别为 总记录集数,总页数,上一页,下一页,4开始为页码</param>  /// <returns>此页的数据记录集</returns>  public static DataTable PageList(string conn,int perPage,string url,string columnList,string tableName,string condition,string orderStr,out string[] pageInfo)  {  int pageNo = 1; //当前页码  int totalCnt = 1; //记录集总数  int pageCnt = 0; //总页数  DataTable dt = new DataTable(); //用于返回的DataTable  using (MySqlConnection myConn = new MySqlConnection(conn))  {  MySqlDataAdapter adp = new MySqlDataAdapter();  MySqlCommand cmd = new MySqlCommand();  if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request["pageNo"]))  {  try  {  pageNo = int.Parse(System.Web.HttpContext.Current.Request["pageNo"].ToString());  }  finally  {  }  }//得到当前页面值  cmd.Connection = myConn;  myConn.Open();  cmd.CommandText = "p_pageList";  cmd.CommandType = CommandType.StoredProcedure;  cmd.Parameters.Add("m_pageNo",MySqlDbType.Int32,11);  cmd.Parameters.Add("m_perPageCnt",11);  cmd.Parameters.Add("m_column",MySqlDbType.VarChar,1000);  cmd.Parameters.Add("m_table",1000);  cmd.Parameters.Add("m_condition",1000);  cmd.Parameters.Add("m_orderBy",200);  cmd.Parameters.Add("m_totalCnt",11);  cmd.Parameters["m_pageNo"].Value = pageNo;  cmd.Parameters["m_perPageCnt"].Value = perPage;  cmd.Parameters["m_column"].Value = columnList;  cmd.Parameters["m_table"].Value = tableName;  cmd.Parameters["m_condition"].Value = condition;  cmd.Parameters["m_orderBy"].Value = orderStr;  cmd.Parameters["m_totalCnt"].Direction = ParameterDirection.Output;  cmd.ExecuteNonQuery();  adp.SelectCommand = cmd;  adp.Fill(dt);  totalCnt = int.Parse(cmd.Parameters["m_totalCnt"].Value.ToString());  }  pageCnt = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(totalCnt) / perPage));  if (pageNo > pageCnt)  {  pageNo = pageCnt;  }//如果当前页码大于总页数,则当前页为最后一页  //处理页码地址参数  string pageNumLink = string.Empty; //页码的链接地址  if (string.IsNullOrEmpty(url.Trim()))  {  pageNumLink = "<a href="?pageNo=";  }  else if (url.IndexOf('?') >= 0)  {  pageNumLink = "<a href="" + url + "&pageNo=";  }  else  {  pageNumLink = "<a href="" + url + "?pageNo=";  }  //上一页,下一页字符串赋值  string abovePage = pageNumLink + (pageNo-1).ToString()+ "">上一页</a>";  string nextPage = pageNumLink + (pageNo + 1).ToString() + "">下一页</a>";  if (pageNo == 1)  {  abovePage = string.Empty;  }//如果当前页为第一页,则不显示“上一页”字符串  if (pageNo == pageCnt)  {  nextPage = string.Empty;  }//如果当前页为最后一页,则不显示“下一页”字符串  pageInfo = new string[14];  pageInfo[0] = totalCnt.ToString(); //显示记录集总数  pageInfo[1] = pageCnt.ToString(); //显示总页数  pageInfo[2] = abovePage; //显示上一页  pageInfo[3] = nextPage; //显示下一页  int startIndex;  int endIndex;  startIndex = (pageNo / 10) * 10 + 1; //起始页  if (pageNo % 10 == 0)  {  startIndex = startIndex - 10;  }  endIndex = startIndex + 9; //结束页  if (endIndex > pageCnt)  {  endIndex = pageCnt;  }//如果结束页大于总页数,则结束页为最后一页值  int pageIndex = 4;  for (int i = startIndex; i <= endIndex; i++)  {  string pageValue = pageNumLink + i.ToString() + "">" + i.ToString() + "</a>";  if (i == pageNo)  {  pageValue = i.ToString();  }  pageInfo[pageIndex] = pageValue;  pageIndex++;  }  return dt;  }
                          (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |