asp mysql分页代码,asp.net 结合mysql存储过程进行分页代码

asp.net 结合mysql存储过程进行分页代码

2021-01-23 17:00:59213

不过在网上找了一些,发现都有一个特点——就是不能传出总记录数,干脆自己研究吧。终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了。贴代码吧直接:也算是对自己学习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,' where ',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

复制代码 代码如下:

///

/// 分页显示

///

/// 连接数据库字符串

/// 每页显示条数

/// 查询的字段字符

/// 查询的表名

/// where条件(不用写where)

/// 排序条件(不用写order by)

/// 返回页码的数组,0,1,2,3分别为 总记录集数,总页数,上一页,下一页,4开始为页码

/// 此页的数据记录集

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", MySqlDbType.Int32, 11);

cmd.Parameters.Add("m_column", MySqlDbType.VarChar, 1000);

cmd.Parameters.Add("m_table", MySqlDbType.VarChar, 1000);

cmd.Parameters.Add("m_condition", MySqlDbType.VarChar, 1000);

cmd.Parameters.Add("m_orderBy", MySqlDbType.VarChar, 200);

cmd.Parameters.Add("m_totalCnt", MySqlDbType.Int32, 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 = "

}

else if (url.IndexOf('?') >= 0)

{

pageNumLink = "

";

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() + "

";

if (i == pageNo)

{

pageValue = i.ToString();

}

pageInfo[pageIndex] = pageValue;

pageIndex++;

}

return dt;

}

点击这里复制本文地址

以上内容由聚米学院网友整理呈现,如对侵犯您的权益,请联系邮箱:fzsbm@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值