当前位置:编程学习 > C#/ASP.NET >>

统计某表分页总数GetCount为什么这么调用?


 #region 统计某表分页总数
            /// <summary>
            /// 统计某表分页总数
            /// </summary>
            /// <param name="keyField">主键/索引键</param>
            /// <param name="tableName">表名</param>
            /// <param name="condition">查询条件</param>
            /// <param name="pageSize">页宽</param>
            /// <param name="RecordCount">记录总数</param>
            /// <returns>返回分页总数</returns> 
            public int GetPageCount(string keyField, string tableName, string condition, int pageSize, int RecordCount)
            {
                int PageCount = 0;
                PageCount = (RecordCount % pageSize) > 0 ? (RecordCount / pageSize) + 1 : RecordCount / pageSize;
                if (PageCount < 1) PageCount = 1;
                return PageCount;
            }
            /// <summary>
            /// 统计某表分页总数
            /// </summary>
            /// <param name="keyField">主键/索引键</param>
            /// <param name="tableName">表名</param>
            /// <param name="condition">查询条件</param>
            /// <param name="pageSize">页宽</param>
            /// <returns>返回页面总数</returns> 
            public int GetPageCount(string keyField, string tableName, string condition, int pageSize, ref int RecordCount)
            {
                RecordCount = GetRecordCount(keyField, tableName, condition);
                return GetPageCount(keyField, tableName, condition, pageSize, RecordCount);
            }
            /// <summary>
            /// 统计某表分页总数
            /// </summary>
            /// <param name="Field">可重复的字段</param>
            /// <param name="tableName">表名</param>
            /// <param name="condition">查询条件</param>
            /// <param name="pageSize">页宽</param>
            /// <param name="flag">是否主键</param>
            /// <returns>返回页页总数</returns> 
            public int GetPageCount(string Field, string tableName, string condition, ref int RecordCount, int pageSize, bool flag)
            {
                RecordCount = GetRecordCount(Field, tableName, condition, flag);
                return GetPageCount(Field, tableName, condition, pageSize, ref RecordCount);
            }
            #endregion


为什么在第三个函数中还要调用第二个GetPageCount方法呢?


附:GetRecordCount代码

     #region 统计某表记录总数
            /// <summary>
            /// 统计某表记录总数
            /// </summary>
            /// <param name="KeyField">主键/索引键</param>
            /// <param name="TableName">数据库.用户名.表名</param>
            /// <param name="Condition">查询条件</param>
            /// <returns>返回记录总数</returns> 
            public int GetRecordCount(string keyField, string tableName, string condition)
            {
                int RecordCount = 0;
                string sql = "select count(" + keyField + ") as count from " + tableName + " " + condition;
                DataSet ds = GetDataSet(sql);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                }
                ds.Clear();
                ds.Dispose();
                return RecordCount;
            }
            /// <summary>
            /// 统计某表记录总数
            /// </summary>
            /// <param name="Field">可重复的字段</param>
            /// <param name="tableName">数据库.用户名.表名</param>
            /// <param name="condition">查询条件</param>
            /// <param name="flag">字段是否主键</param>
            /// <returns>返回记录总数</returns> 
            public int GetRecordCount(string Field, string tableName, string condition, bool flag)
            {
                int RecordCount = 0;
                if (flag)
                {
                    RecordCount = GetRecordCount(Field, tableName, condition);
                }
                else
                {
                    string sql = "select count(distinct(" + Field + ")) as count from " + tableName + " " + condition;
                    DataSet ds = GetDataSet(sql);
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                    }
                    ds.Clear();
                    ds.Dispose();
                }
                return RecordCount;
            }
            #endregion
--------------------编程问答-------------------- 重载方法,让方法能统一地处理不同参数的情况。  --------------------编程问答-------------------- 为了计算一个数,还得返回一个数据集,写的人不懂ExecuteScalar吗? --------------------编程问答-------------------- 恩,是啊,真是多余!
而且,你说的重载方法,在第三个函数里面,有获取了RecordCount
但是调用第二个方法,又重新获取了RecordCount.
我觉得这有问题! --------------------编程问答--------------------
引用 3 楼 wpf123456789 的回复:
恩,是啊,真是多余!
而且,你说的重载方法,在第三个函数里面,有获取了RecordCount
但是调用第二个方法,又重新获取了RecordCount.
我觉得这有问题!
重新获取RecordCount是为了给重新赋值.
函数重载--多态的一种表现. --------------------编程问答-------------------- 楼上分析得很不错

引用 4 楼 kingdom_0 的回复:
引用 3 楼 wpf123456789 的回复:

恩,是啊,真是多余!
而且,你说的重载方法,在第三个函数里面,有获取了RecordCount
但是调用第二个方法,又重新获取了RecordCount.
我觉得这有问题!
重新获取RecordCount是为了给重新赋值.
函数重载--多态的一种表现.
--------------------编程问答-------------------- 但这里面,在第三个函数中,查询了一遍。
但在第二个函数中,又重新查询了?那第一次不就多余了吗?


RecordCount = GetRecordCount(keyField, tableName, condition);

--------------------编程问答--------------------
引用 6 楼 wpf123456789 的回复:
但这里面,在第三个函数中,查询了一遍。
但在第二个函数中,又重新查询了?那第一次不就多余了吗?

C# code

RecordCount = GetRecordCount(keyField, tableName, condition);

RecordCount = GetRecordCount(keyField, tableName, condition);

RecordCount = GetRecordCount(Field, tableName, condition, flag);

GetRecordCount的参数个数都不一样吧.即使参数个数一样。值也不一定一样吧。先别忙着怀疑是程序的问题。先好好的分析分析. --------------------编程问答--------------------
引用 7 楼 kingdom_0 的回复:
引用 6 楼 wpf123456789 的回复:

但这里面,在第三个函数中,查询了一遍。
但在第二个函数中,又重新查询了?那第一次不就多余了吗?

C# code

RecordCount = GetRecordCount(keyField, tableName, condition);

RecordCount = GetRecordCount(keyField, table……



是啊,他们的值是不一定一样的啊,
但是之前,也就是第三个函数,这样得到了RecordCount,但是下一条语句就调用
第二个函数了。
在第二个函数里面,出现你说的RecordCount的再一次获取。并且是ref。引用。
所以,就相当于,RecordCount的值是由第二个函数确定的。
那么,我就想问,在第三个函数中还要查询获取ReordCount,之后又会因为调用第二个函数
而重新获取值。这样不就是多余了吗?
--------------------编程问答-------------------- math.ceilling(......
--------------------编程问答-------------------- 确实多此一举,我觉得他应该调第一个GetPageCount而不应该调第二个 --------------------编程问答--------------------

为什么在第三个函数中还要调用第二个GetPageCount方法呢?

调用第二个GetPageCount没有意义 --------------------编程问答--------------------
引用 11 楼 porschev 的回复:
为什么在第三个函数中还要调用第二个GetPageCount方法呢?

调用第二个GetPageCount没有意义


这倒不是,这样可以传出来 Recount值。
只是里面获取了两次,有点多余。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,