int CurrentPage, PageCount;//当前页,总页
int PageSize = 20;//每页显示的数
private void PageBackBase()
{
try
{
if (CurrentPage < 1)
{
CurrentPage = 1;
} MySqlConnection sqlConn = new MySqlConnection(Public.ClassPublic.strConn);
sqlConn.Open();
MySqlCommand sqlCmd = new MySqlCommand("pr_pager", sqlConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Connection = sqlConn;
MySqlParameter[] prams ={
new MySqlParameter("@p_table_name",MySqlDbType.VarChar,1024),/*表名*/
new MySqlParameter("@p_fields",MySqlDbType.VarChar,1024),/*查询字段*/
new MySqlParameter("@p_page_size",MySqlDbType.Int64),//每页记录数
new MySqlParameter("@p_page_now",MySqlDbType.Int64),//当前页
new MySqlParameter("@p_order_string",MySqlDbType.VarChar,128),//排序条件(包含ORDER关键字,可为空)*/
new MySqlParameter("@p_where_string",MySqlDbType.VarChar,1024),/*WHERE条件(包含WHERE关键字,可为空)*/
new MySqlParameter("@p_out_rows",MySqlDbType.Int64)};/*输出记录总数*/
prams[0].Value = "t_CapTrue";//表名
prams[1].Value = " * ";//字段名
prams[2].Value = PageSize;
prams[3].Value = CurrentPage;
prams[4].Value = "order by SN";
prams[5].Value = " ";
prams[6].Direction = ParameterDirection.Output;//返回总页数
foreach (MySqlParameter pram in prams)
{
sqlCmd.Parameters.Add(pram);
} DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = sqlCmd;
da.Fill(ds);
sqlConn.Close();
PageCount = (int)sqlCmd.Parameters["@p_out_rows"].Value; this.txtPage.Text = CurrentPage.ToString() + "/" + PageCount.ToString();
this.dtShowMonitor.DataSource = ds.Tables[0];
}
catch (Exception ex)
{ throw ex;
}
}存储过程是
CREATE PROCEDURE pr_pager( IN p_table_name VARCHAR(1024), /*表名*/
IN p_fields VARCHAR(1024), /*查询字段*/
IN p_page_size INT, /*每页记录数*/
IN p_page_now INT, /*当前页*/
IN p_order_string VARCHAR(128), /*排序条件(包含ORDER关键字,可为空)*/
IN p_where_string VARCHAR(1024), /*WHERE条件(包含WHERE关键字,可为空)*/
OUT p_out_rows INT /*输出记录总数*/
)
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT '分页存储过程'
BEGIN /*定义变量*/
DECLARE m_begin_row INT DEFAULT 0;
DECLARE m_limit_string CHAR(64); /*构造语句*/
SET m_begin_row = (p_page_now - 1) * p_page_size;
SET m_limit_string = CONCAT(' LIMIT ', m_begin_row, ', ', p_page_size);
SET @COUNT_STRING = CONCAT('SELECT COUNT(*) INTO @ROWS_TOTAL FROM ', p_table_name, ' ', p_where_string);
SET @MAIN_STRING = CONCAT('SELECT ', p_fields, ' FROM ', p_table_name, ' ', p_where_string, ' ', p_order_string, m_limit_string); /*预处理*/
PREPARE count_stmt FROM @COUNT_STRING;
EXECUTE count_stmt;
DEALLOCATE PREPARE count_stmt;
SET p_out_rows = @ROWS_TOTAL; PREPARE main_stmt FROM @MAIN_STRING;
EXECUTE main_stmt;
DEALLOCATE PREPARE main_stmt;
END;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货