asp.net—执行分页存储过程的函数
分页存储过程的T—SQL在之前的文章中已经跟大家分享过了
现在就对应 分页存储过程 跟大家分享下在.net中执行的函数。
该文章是希望给予新手一些编程过程中的帮助(大神可以帮忙指出代码中的不妥之处)
public static DataTable PageQuery(string sqlconn, CommandType command_type, PageSearch DbConnection, ref Int32 totalCount, bool bNeedCloseConn = true) { SqlConnection cn = null; SqlCommand Mcmd; DataTable dt = new DataTable(); try { SqlParameter[] para = new SqlParameter[10]; para[0] = new SqlParameter("@tab", DbConnection.DbTable); para[1] = new SqlParameter("@PrimaryKey", DbConnection.DbPrimaryKey); para[2] = new SqlParameter("@strFld", DbConnection.DbFiles); para[3] = new SqlParameter("@strWhere", DbConnection.Where); para[4] = new SqlParameter("@PageIndex", DbConnection.PageIndex); para[5] = new SqlParameter("@PageSize", DbConnection.PageSize); para[6] = new SqlParameter("@Sort", DbConnection.Sort); para[7] = new SqlParameter("@Order", DbConnection.Order); para[8] = new SqlParameter("@IsDistinct", DbConnection.IsDistinct); para[9] = new SqlParameter("@TotalCount", SqlDbType.Int); para[9].Direction = ParameterDirection.Output; cn = comm_fun.get_cn(sqlconn); cn.Open(); // 声明哪个执行存储过程 Mcmd = new SqlCommand("pro_common_pageList", cn); Mcmd.CommandType = command_type; Mcmd.Parameters.AddRange(para); if (cn.State != ConnectionState.Open) cn.Open(); // 获取分页数据集 SqlDataReader sqldr = Mcmd.ExecuteReader(); dt.Load(sqldr); sqldr.Close(); // 返回总记录数 totalCount = para[9].Value; if (bNeedCloseConn == true) { Mcmd.Dispose(); cn.Close(); } Mcmd.Parameters.Clear(); // 清掉参数以便下次使用 return dt; } catch (Exception ex) { return dt; } finally { comm_fun.CloseConnection(cn); } }
注:上述代码中 “comm_fun” 是封装好的SqlHellper类。"pro_common_pageList"是存储过程名称